| [ CnUnix ] in KIDS 글 쓴 이(By): soulman (그림자) 날 짜 (Date): 2003년 4월 29일 화요일 오전 09시 57분 37초 제 목(Title): Re: 계산 코드 옵티마이즈.. 컴파일러가 의외로 삽질할 경우가 꽤 있습니다. for(k=0;k<100;k++) a[(i*NX +j)*NY+k] 대신에 ii=(i*NX+j)*NY; for(k=ii;k<ii+100;k++) a[k] 가 몇배 빠른 경우도 경험해 봤습니다. ----------------------------- 지금 코드를 다 이런식으로 짜고 있습니다. 컴파일러의 삽질이라고 볼 수도 있는데, 저한테 조언하신 분은 컴파일러가 당연히 그렇게 행동한다고 말씀하시더군요... for(i=...) switch((structPtr+i)->member) { case : case : } 보다 for(i=...) { value = (structPtr+i)->member; switch(value) { case : case : } } 이게 더 빠를까요(case가 많다면.. 그러니까, case에서 매번 addressing을 하는지, 아니면 switch문에서 value를 따로 할당하고 시작하는지..) (첫번째라면 정말로 컴파일러 삽질일 거 같은데... 이건 고치지 않았거든요) ================================ performance computing이라고 어느 분이 언급하신 거 같은데 이런 쪽에 관련된 참고자료 부탁 드립니다...책이라던지.. |