您正在寻找的是流压缩方法。好消息是你有很多选择。另请注意,您必须考虑内存,因为某些解决方案(基于字典)可能需要大量内存,因此请进行测试和调整。
为了使我的回答简短,我建议尝试 LZ4。
LZ4 - http://code.google.com/p/lz4/
LZ4 是一种非常快速的无损压缩算法,提供每核 300 MB/s 的压缩速度,可通过多核 CPU 进行扩展。它还具有极快的解码器,每核速度为 GB/s,通常达到多核系统的 RAM 速度限制。
基准:
Name Ratio C.speed D.speed
MB/s MB/s
LZ4 (r97) 2.084 410 1810
LZO 2.06 2.106 409 600
QuickLZ 1.5.1b6 2.237 373 420
Snappy 1.1.0 2.091 323 1070
LZF 2.077 270 570
zlib 1.2.8 -1 2.730 65 280
LZ4 HC (r97) 2.720 25 2040
zlib 1.2.8 -6 3.099 21 300
有很多可用的实现,请查看:http ://code.google.com/p/lz4/
LZO - http://lzo-net.sourceforge.net/
LZO.Net 将 Markus "FXJ" Oberhumer 伟大的 LZO 压缩库 (V1.08) 的强大功能带到 .Net。它使用一个小的 C# 类包装对本机 DLL 的访问,保持 ANSI-C 库的原始速度。
活泼- https://code.google.com/p/snappy/
Snappy 是一个压缩/解压缩库。它的目标不是最大压缩或与任何其他压缩库的兼容性;相反,它的目标是非常高的速度和合理的压缩。
有两个 C# 本机实现可用:
QuickLZ - http://www.quicklz.com/
QuickLZ 是世界上最快的压缩库,每个内核达到 308 Mbyte/s。如果已获得商业许可,或者在 GPL 1、2 或 3 下,公开发布的任何内容都必须是开源的,则可以在商业许可下使用它。
本机实现 - QuickLZ C#
So far, only a subset of the library has been ported,
namely the setting:
QLZ_COMPRESSION_LEVEL = 1 or 3
QLZ_STREAMING_BUFFER = 0
QLZ_MEMORY_SAFE = 0