2010-03-19 44 views
10

Tôi đang tìm một thuật toán giải nén các khối dữ liệu (1k-30k) trong thời gian thực với chi phí tối thiểu. Nén tốt nhất là nhanh nhưng không quan trọng bằng tốc độ giải nén.Thuật toán giải nén thời gian thực nhanh nhất

Từ những gì tôi có thể thu thập LZO1X sẽ là nhanh nhất. Tôi đã bỏ lỡ bất cứ điều gì? Lý tưởng nhất là thuật toán không thuộc GPL.

+1

Giải nén cái gì? Các tập tin? Dòng? Gói IP? Video? Mã hóa gì? –

+4

Sẽ không có nén nào là nén nhanh nhất? –

+5

@JensSchauder: Chắc chắn không, Nếu giải nén vượt quá tốc độ RAM (giải nén vào L2/L3 cache chẳng hạn), bạn có thể đạt được tốc độ nén cao hơn không có nó. Khi sử dụng đĩa hoặc mạng, lợi thế nén của bạn có thể lớn hơn nữa. –

Trả lời

0

Khi bạn không thể sử dụng mã được cấp phép GPL, lựa chọn của bạn rõ ràng - zlib. Giấy phép rất dễ dàng, nén nhanh, tỷ lệ nén công bằng, giải nén rất nhanh, hoạt động ở mọi nơi và được chuyển sang mọi ngôn ngữ lành mạnh.

+2

Bài báo này: http://www.kkant.net/papers/lzo_results.pdf tuyên bố ưu điểm tốc độ giải nén 20x của LZO so với zlib (tất nhiên với hiệu suất nén kém đi). – MaR

+1

Vâng, zlib là tốt ở nhiều điều, nhưng nó không phải là tốt nhất ở tốc độ giải nén. Tôi đã có một cái gì đó giống như QuickLZ trong tâm trí. –

+0

Là một đồng tác giả zlib và người bảo trì zlib, tôi có thể nói rằng đây không phải là câu trả lời hay cho câu hỏi này. Có nhiều giải nén nhanh hơn, nếu bạn cho phép nén ít hiệu quả hơn. –

3

Dùng thử Snappy của Google.

Snappy là thư viện nén/giải nén. Nó không nhằm mục đích nén tối đa, hoặc tương thích với bất kỳ thư viện nén nào khác; thay vào đó, nó nhằm mục đích cho tốc độ rất cao và nén hợp lý. Ví dụ, so với chế độ nhanh nhất của zlib, Snappy là thứ tự cường độ nhanh hơn đối với hầu hết các đầu vào, nhưng các tệp nén kết quả ở bất cứ đâu lớn hơn từ 20% đến 100%. Trên một lõi của bộ vi xử lý Core i7 ở chế độ 64 bit, Snappy nén ở khoảng 250 MB/giây trở lên và giải nén ở khoảng 500 MB/giây trở lên.

+0

Yuku, chúng tôi quan sát tốc độ giải nén 10-12Mb/giây (so với 500Mb/giây được yêu cầu trên wiki) chạy 'hadoop -text $ {snappy_compressed_file}'. Các thư viện gốc của Hadoop được cài đặt (bao gồm cả bản địa có sẵn). Có suy nghĩ gì không? Thông tin CPU của chúng tôi (Amazon EMR) Intel (R) Xeon (R) CPU E5645 @ 2.40GHz –

+0

Ứng dụng riêng của tôi chạy trên bộ xử lý 1,2 Ghz ARMv7 giải nén dữ liệu 5MB trong 100ms. Bạn đã giải nén từ bộ nhớ hoặc có I/O trên không? – yuku

+0

Cảm ơn bạn đã chia sẻ, Yuku. Có I/O tham gia, tuy nhiên, chi phí là khá không đáng kể so với hit giải nén. Dưới đây là cùng một câu hỏi với chi tiết hơn một chút về nhóm google vui nhộn: http://goo.gl/LBapFc –

1

lz4 là những gì bạn đang tìm kiếm tại đây.

LZ4 là thuật toán nén không mất dữ liệu, cung cấp tốc độ nén tại 400 MB/s trên mỗi lõi, có thể mở rộng với CPU đa lõi. Nó có bộ giải mã cực nhanh , với tốc độ nhiều GB/giây trên mỗi lõi, thường đạt đến giới hạn tốc độ RAM trên các hệ thống đa lõi.

Các vấn đề liên quan