프갤러들의 자작 strrev 퍼포먼스 측정
2009/07/17 09:57
링크 -
http://gall.dcinside.com/list.php?id=programming&no=125177
본인의 경우에는 한줄짜리 / duff's device 를 이용해 두가지 버전의 코드를 생산.
void strrev1(const char* sz1, char* sz2)
{ for(sz2+=strlen(sz1),*sz2--='\0';*sz1;*sz2--=*sz1++); }
void strrev2(const char* sz1, char* sz2) { int nCnt=strlen(sz1); sz2+=nCnt; *sz2--='\0'; switch(nCnt%8){ do{ case 0 : *sz2--=*sz1++; case 7 : *sz2--=*sz1++; case 6 : *sz2--=*sz1++; case 5 : *sz2--=*sz1++; case 4 : *sz2--=*sz1++; case 3 : *sz2--=*sz1++; case 2 : *sz2--=*sz1++; case 1 : *sz2--=*sz1++; }while((nCnt-=8)>0);} }
생각보다 duff's device 의 성능이 좋더라.
하지만 어설픈 최적화는 안하니만 못하다.
duff's device도 CPU 아키텍쳐에 따라 좆ㅋ망ㅋ 할 수도 있으니.

