1)
int offset = height / 2;
_Draw(offset);
장점: 변수를 추가해서 height / 2의 연산을 줄임
2)
_Draw(height / 2);
장점: 새로운 변수 추가가 되지 않음
루프 돈다고 가정하면 뭐 100번 정도로 실행된다고 하지. 내가 전에 얼핏 새 변수 추가되는 것도 오버헤드가 크니까 가능하면 연산으로 처리하라는 거 오프라인 세미나에서 들은 기억이 있거든. 근데 연산보다 새 변수 추가가 더 느리다는 게 안 믿겨짐... 뭐가 더 빠름?
아, 미리 얘기하는데 컴파일러 레벨에서 최적화 될 거란 소리는 ㄴㄴ.
너무너무 어렵네요
스택 할당과 레지스터 변수 사용.. 결로은 최적화 옵션 켜면 똑같음.
굳이 순서를 따지자면 변수를 지정하는쪽이 지정하지 않는쪽 보다 컴파일러의 해석 자유도가 떨어진다는거지. 좀 바보같은 컴파일러에선 스택을 잡아버리니까 느릴 수 있다는거고. 근데 저정도론 최적화 가능성을 이야기할 떡밥 꺼리가 못됨. 너무 미미해서.
어떤 계산을 미리 변수에 해 놓고 우려 먹을때, 변수가 의미 있는건데, 네 번 이상 우려 먹어야 본전 뽑는다.
예를들어 int pixel_count = width * height; 이런 코드가 있을 때, pixel_count 를 네 번 이상 r-value 로 사용하면 본전 뽑는거고 아니면 width * height 를 직접 집어 넣는게 차라리 나아.
단 이건 정수 연산일때고, 부동소수점 연산에선 또 이야기가 달라짐. (연산 식이 길어져도 물론 달라지지)
연산이 길거나 무겁다면 당연히 변수에 담아서 두 번만 사용해도 본전 뽑을 수 있음.
성님 근데 인티저갖고 우측값최적화 하는게 큰 의미가 있습니까?
복잡한 r-value같은 경우엔 두번이상 쓸 경우엔 변수로 저장해서 써먹는게 이득. sqrt pow 이런거 포함
그게 미친듯이 루프를 돌면 조금이라도 아껴야...
심지어 같은 클럭이어도 배터리 소모가 적을 연산을 쓴다구 ㅡㅡㅋ