strstr의 최적화??
글쓴이: freemckang / 작성시간: 수, 2006/10/18 - 10:40오후
흠... 갑자기 glibc의 strstr()을 더욱 최적화 할 수 있을까 하는 생각이 드네요... 많은 시도는 해보았지만.. 번번히 표준 라이브러리보다 성능이 떨어지더군요...
물론 범위를 좁혀놓고 작성하면 성능은 더 좋아질 수는 있겠지만, 범용적으로 사용될 수 있는 strstr()이 과연 최적화 될 수 있을지...
다른 분들의 의견이 궁금합니다 :)
Forums:
glibc 같은 건 인라인
glibc 같은 건 인라인 어셈으로 최적화가 되어 있기 때문에 그저 코드 최적화로 glibc 보다 빠르게 돌게 만드는 건 쉽지 않을겁니다.
------
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
제가 소스를 잘못보는건지...
glibc/sysdeps/generic/strstr.c를 보고 있습니다.
인라인 어셈으로 작성된 부분이 없는데, 제가 소스파일을 잘못보고 있는건가요??
glibc/sysdeps/vax/strstr.s가 있긴 하지만, 이건 말 그대로 vax를 위한 어셈인거 같구요... 음...
句日新, 日新 日新 又日新.
句日新, 日新 日新 又日新.
한번 glibc 소스를
한번 glibc 소스를 보시면 금방 포기하시게 될 것입니다 ;;
언뜻 보기에 "범용적인" glibc가 느릴 것 같은 기분이 드는 것은 사실입니다.
실제로도 모든 곳을 다 최적화하지 못했을테니 그런 면도 있겠지만 strstr()같이
많이 쓰이는 함수는 최적화가 잘 되어있습니다. :)
glibc의 strstr은 어떤
glibc의 strstr은 어떤 알고리즘으로 구현되어 있나요?
strstr이라면 부분문자열을 검색하는 함수인데...
얼핏 생각하면 KMP같은 것일듯 하네요.
제가 실험해보니까
KMP
Brute Force + 첫글자 비교
Brute Force
Boyer-Moore (Brute Force보다 3배 느림)
Rabin-Karp (4배 느림)
이렇게 되던데...
Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.
http://sources.redhat.com/cgi
http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/string/strstr.c?rev=1.1&content-type=text/x-cvsweb-markup&cvsroot=glibc
댓글 달기