• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

코드 최적화 관점에서 리터럴에 대해 질문이 있습니다.

22.04.15 21:42 작성 조회수 205

0

강의 시간은 따로 없고 강의를 쭉 듣다가 궁금해져서 

 

 질문 주제와 관련된 것이 이 강의라서 여기서 질문 드리는데요

 

특정 계산을 반복하는 코드를 짰는데요

 

이것이 계산 속도가 중요한 부분이 있습니다.

 

그래서 최적화를 할려고 노력중인데

 

변수에 리터럴을 저장 해놓고

 

변수를 쓰는게 계산이 빠른지

 

아니면 그냥 변수 저장없이 리터럴 값을 바로 쓰는게

 

계산이 빠른지 궁금합니다.

 

변수가 반복이 된다면 변수를 쓰는게 좋다고 하시겠지만

 

2,3번 쓰는것도 그냥 변수로 쓸지 아니면

 

리터럴 상수 값으로 쓰는게 나을지 궁금합니다.

 

그만큼 속도가 중요해서 고민이 하고 있습니다.

 

값은 소수랑 정수가 있습니다.

답변 2

·

답변을 작성해보세요.

0

안녕하세요? 

C++의 저수준 최적화는 인간 프로그래머보다 컴파일러가 더 잘한다는 것이 일반적인 견해입니다.

특별히 실수를 하지 않는다면 (예: for loop  안에서 메모리 new/delete) 지금 질문하신 내용처럼 소소한 내용들은 아마 어셈블로 단위로 비교해보시면 거의 동일하게 나올겁니다. 특정 하드웨어에 맞춰서 개발하시는 경우에는 거기에 맞는 설정이 있을 수도 있습니다만, 이런 경우에는 어쩔 수 없이 여러가지 조합에 대해 반복 테스트를 해보셔야 합니다.

최근 추세는 simd, 멀티쓰레딩, gpu 등을 하드웨어의 성능을 최대한 활용하는 방향입니다.

마지막으로 더 빠른 알고리즘을 만들어서 사용하는 것이 가장 강력하기 때문에 개인적으로는 저수준 최적화 보다는 자료구조/알고리즘 공부를 먼저 하시길 권장합니다.

 

 

0

강민철님의 프로필

강민철

2022.04.15

안녕하세요,

질문자님이 개발하고자 하는 프로그램이 어떤 것인지는 잘 모르겠으나,

 

이론적으로 변수 선언을 최소한으로 유지하는 것이 속도 면에서는 좋습니다.

(다만 리터럴 상수로 쓴다고 해서 속도가 드라마틱하게 올라가지는 않습니다.)

 

중첩된 for loop 등의 느린 알고리즘을 해결하여 시간복잡도를 낮추는 것이 속도를

높이는 데에 가장 효과적이기는 합니다.

 

나아가 inline assembly 등을 이용해서 아예 어셈블리어로 짜는 것도 고려해보실 수는 있겠네요.

감사합니다.