태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

프갤러들의 자작 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 아키텍쳐에 따라 좆ㅋ망ㅋ 할 수도 있으니.

크리에이티브 커먼즈 라이선스
Creative Commons License

유리한 코드창고/변태코드