이거저거 속도 좀 측정하려고 했는데,
컴파일러가 최적화를 쓸데없이(?) 잘해줘서 어떻게 처리해야할지 모르겠음.
C#에서 예를 들면,
static int iCount = 10000 * 10000;
static int a = 12345, b = 67890;
static int[] c = new int[iCount];
// 속도측정구문...
for(int i = 0; i < iCount; ++i) {
c[i] = a + b;
}
// 속도측정구문...
이런구문 만들었다고 쳤을때,
속도측정해보면,
디버그 모드에서 돌리면 250ms 정도 걸리는데,
릴리즈 모드에서 돌리면 70ms 정도 걸림.
저런 단순한 덧셈도 확 최적화 해버리는데,
어떤걸 최적화했으며, 어떻게 그 영향을 없애거나 줄일 수 있을까? ㅠㅠ
덧셈말고 다른걸 최적화해줌
원래 디버그랑 릴리즈 자체가 프로그램이 차이가 잇음.. 덧셈 자체는 최적화해봤자일꺼임
디버그는 한줄한줄마다 해준거고 릴리즈는 필요없는 줄은 생략 됬다고 보는게 맞음
1.229.*.*// 그럼 저기서 어떤걸 생략해준거 같음요? for문에 최적화 할게 있나?
상수최적화랑 언롤링정도 들어갈듯
씨샵이라 모르겠는데 컴파일러마다 최적화 끄는 옵션이 있음
음... 그냥 옵션 끄는걸로 가야할까여? 옵션 끄면서 체크하는게 옳은건가 모르겠네. ㅠㅠ
엥. 닷넷은 방법이 없나? 코드최적화 체크해제했는데도 걍 최적화됨 ㅠㅠㅠㅠㅠㅠㅠ
일단 사칙연산 자체에서는 최적화 될거 없는거 맞죠? 덧셈,뺄셈,곱셈,나눗셈 이런거요.... 아니다 나눗셈 이거 최적화 될수도 있지 않나? 그냥 측정자체가 무의미해지나? ㅡ.ㅡ
어셈을 까보세요 그게 제일 정확함.. - 164260의 휘발성 계정