이 라이브러리는 안정적이고 널리 쓰이고 있지만, 속도가 다소 느린 편이다.
꿀뷰 등의 빠른 이미지 뷰어에서 사용되는 x86 SIMD ext for IJG JPEG 라이브러리가 있다.
이 라이브러리는 libjpeg 6b를 확장해서 일부를 어셈블러로 작성한 것인데, 속도가 상당히 빠르다.
(현재 libjpeg는 8b 까지 공개됨)
이 라이브러리를 컴파일해보고, 이것이 libjpeg 8b에 비해 얼마나 빠른가를 확인해봤다.
컴파일 시에 특별히 준비할 것은 없고, NASM을 사용할 수 있도록 설치하기만 하면 된다.
준비사항은 아래와 같다.
1. NASM 설치
2. 실행파일의 파일명을 nasm.exe에서 nasmw.exe로 변경
2. 실행파일의 파일명을 nasm.exe에서 nasmw.exe로 변경
Visual Studio 6.0과 Visual Studio 2010에서 같은 코드를 실행시켜 성능을 비교해봤다.
비교는 위 실행화면처럼 연산을 20회 반복한 뒤에 평균시간을 쟀다.
대상은 VC++6에서 컴파일한 6b-SIMD와 8b 그리고, VC++10에서 컴파일한 8b.
(VC++10에선 6b-SIMD 컴파일 실패했음)
역시 6b-SIMD가 어셈블러로 되어있는지라 상당히 빠르다.
1. 6b-SIMD는 8b에 비해 3배 가까이 빠름
2. 8b도 VC++10에서 컴파일한 것이 10% 정도 빠름
3. VC++10에서 6b-SIMD 컴파일 실패. 성공한 고수님들 계시면 내공 전수 좀…
2. 8b도 VC++10에서 컴파일한 것이 10% 정도 빠름
3. VC++10에서 6b-SIMD 컴파일 실패. 성공한 고수님들 계시면 내공 전수 좀…
원래 기본 시간이 짧으니 3배라고 해도 생각만큼 차이가 안나네요 흐음..
답글삭제집에서AMD 칩에서도 벤치해볼가요? ㅋ
@구차니 - 2010/06/21 11:26
답글삭제1. 그럴수도 있지만, 이미지 읽을 때 찰나의 딜레이 문제라 은근 민감하죠.
2. 6b-SIMD VC++2010 컴파일 방법 급매!
@BLUEnLIVE - 2010/06/21 13:06
답글삭제VC 2010이 먼가요!
지금은 곤란하다 기다려달라 카운터!
음.. 그러고 보니.. VC 2010도 어둠의 경로로 구해봐야 하는건가요 ^^;