CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ 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이라고 어느 분이 언급하신 거 같은데
이런 쪽에 관련된 참고자료 부탁 드립니다...책이라던지..

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.