2010-03-19 5 views
10

최소한의 오버 헤드로 실시간으로 데이터 덩어리 (1k-30k)의 압축을 푸는 알고리즘을 찾고 있습니다. 압축 속도는 빠르지 만 감압 속도만큼 중요하지는 않습니다.가장 빠른 실시간 압축 해제 알고리즘

내가 수집 한 것부터 LZO1X가 가장 빠른 것입니다. 내가 놓친 게 있니? 이상적으로 알고리즘은 GPL에 속하지 않습니다.

+1

무엇의 압축 해제? 파일? 스트림? IP 패킷? 비디오? 무슨 인코딩? –

+4

가장 빠른 압축이 압축되지 않습니까? –

+5

@JensSchauder : 압축 해제가 RAM 속도 (예 : L2/L3 캐시로 압축 해제)를 초과하면 압축하지 않으면 압축 속도가 향상됩니다. 디스크 또는 네트워크를 사용할 때 압축 이점이 더 커질 수 있습니다. –

답변

0

GPL 라이센스가 부여 된 코드를 사용할 수없는 경우 선택이 취소됩니다 (zlib). 매우 관대 한 라이센스, 빠른 압축, 적절한 압축 비율, 매우 빠른 압축 해제는 모든 곳에서 작동하고 모든 정상적인 언어로 이식됩니다.

+2

이 논문 : http://www.kkant.net/papers/lzo_results.pdf는 LZO 대 zlib의 20x 압축 해제 속도 이점을 강조합니다 (물론 압축률 성능이 악화됨). – MaR

+1

그래, zlib은 많은 것들이 좋지만 감압 속도가 최고가 아닙니다. QuickLZ와 같은 것을 염두에 두었습니다. –

+0

zlib의 공동 저자이자 zlib 관리자로서이 질문에 대한 좋은 답이 아니라고 말할 수 있습니다. 덜 효과적인 압축을 허용하면 압축 해제 기가 훨씬 빠릅니다. –

3

Google의 Snappy을 사용해보세요.

스냅은 압축/압축 해제 라이브러리입니다. 최대 압축 또는 다른 압축 라이브러리와의 호환성을 목표로하지 않습니다. 대신에 매우 빠른 속도와 합리적인 압축을 목표로합니다. 예를 들어 zlib의 가장 빠른 모드에 비해 Snappy는 대부분의 입력에 대해 더 빠른 속도이지만 결과 압축 파일은 20 %에서 100 % 더 커집니다. 64 비트 모드의 코어 i7 프로세서의 단일 코어에서 Snappy는 약 250 MB/sec 이상에서 압축하고 약 500 MB/sec 이상에서 압축을 해제합니다.

+0

Yuku, 우리는'hadoop -text $ {snappy_compressed_file}'을 실행하면서 10-12Mb/sec의 압축 해제 속도 (위키에서 주장한 500Mb/s)를 준수합니다. Hadoop 네이티브 라이브러리가 설치됩니다 (예 : snappy native 포함). 이견있는 사람? 우리의 CPU 정보 (아마존 EMR) Intel (R) Xeon (R) CPU E5645 @ 2.40GHz –

+0

1.2 GHz에서 실행되는 내 응용 프로그램 ARMv7 프로세서는 100ms에서 5MB 데이터의 압축을 풉니 다. 메모리에서 압축을 풀었거나 I/O 오버 헤드가 있습니까? – yuku

+0

공유 주셔서 감사합니다, 유쿠. I/O가 관련되어 있지만 오버 헤드는 압축 해제에 비해 다소 무시할 수 있습니다. 다음은 같은 멋진 질문입니다. http://goo.gl/LBapFc –

1

lz4 여기에서 찾고 계신 것이 있습니다.

LZ4는 손실없는 압축 알고리즘으로, 멀티 코어 CPU로 확장 가능한 400MB/s의 압축 속도를 제공합니다. 매우 빠른 디코더를 특징으로하며 코어 당 여러 GB/s의 속도를 제공하며 은 일반적으로 멀티 코어 시스템에서 RAM 속도 제한에 도달합니다.