자바 gzip 성능관련

아래 글에 대해 세부적으로 원인을 조사해본 결과 GZIP의 문제가 아닌 것으로 판명되었다.

원인은 압축을 해제한 다음 처리하는 String 연산에 있었다.

테스트한 프로그램이 주로 압축 해제 후 한 라인씩 읽으면서 작업하는 내용이다 보니

압축해제 -> readLine -> indexOf 순으로 작업을 했는데 readLine, indexOf와 같은 String 연산에

많은 시간을 낭비하고 있었다.

결론은 BufferedInputStream과 BufferedReader의 문제...

String 연산은 대부분 CPU의 컴퓨팅 능력에 따라 많이 좌우되는데 32bit와 64bit의 차이 때문에

이런 성능의 차이가 나는 것으로 생각되어 프로그램을 조금 다른 방식으로 바꾸었다.

압축해제 -> linux의 grep 프로세스 생성 -> 압축해제 한 byte stream을 grep의 입력 파이프로 전달 ->

grep의 결과를 다시 프로그램에서 받아서 처리...

결과는 linux의 zcat | grep의 성능과 거의 유사한 속도가 나온다...

자바로 linux의 grep과 같은거 만들면 쉽게 해결되겠지만 시간이 없어서. 삽질은 여기까지
------------------------------------------------------------------------------------------
Hadoop에서 gzip 된 파일에 대해 테스트 중에 성능이 너무 떨어진다는 느낌이 들어 자바의 gzip에 대한 성능 테스트를 해보았다.

비교 대상은 zcat과 GZIPInputStream...

32bits OS에서는 GZIPInputStream이 1.2배 정도 성능이 더 좋은 것으로 나타났는데...

64bits OS에서는 zcat이 무려 5배 정도 좋은 것으로 나타났다.

참고로 hadoop은 한 파일이 gzip 되어 있으면 여러개의 map을 만드는 것이 아니라 하나의 Map만 생성시킨다.
따라서 gzip 파일 저장시에는 미리 쪼개서 올려야 한다...
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


Trackback URL : http://www.jaso.co.kr/trackback/145

Comments List

  1. typos 2007/03/15 21:56 # M/D Reply Permalink

    그런일이...

Leave a comment
« Previous : 1 : ... 275 : 276 : 277 : 278 : 279 : 280 : 281 : 282 : 283 : ... 388 : Next »