您正在寻找的是流压缩方法。好消息是你有很多选择。另请注意,您必须考虑内存,因为某些解决方案(基于字典)可能需要大量内存,因此需要进行测试和调整。
为了保持我的答案,我建议给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带来马库斯 “FXJ” Oberhumer的伟大LZO压缩 库(V1.08)到.NET的力量。它使用一个小C#类对原生 DLL进行访问,保持ANSI-C 库的原始速度。
斯纳皮 - https://code.google.com/p/snappy/
斯纳皮是压缩/解压缩库。它不旨在最大压缩为 ,或与其他任何压缩库的兼容性为 库;相反,它的目标是非常高的速度和合理的压缩。
两个C#机实现可供选择:
QuickLZ - http://www.quicklz.com/
QuickLZ是世界上速度最快的压缩库,每个内核达到了308Mbps/s/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
我需要一个c#实现库。你有没有一个例子说明如何使用FastLZ为动态文件创建标题,然后将其余的标记标记到该标题? Xceed内置此功能。谢谢! – TheDude
我已经更新了答案。我确实删除了FastLZ,因为它不适合你。所以你有4个选项:LZ4,LZO,Snappy,QuickLZ(基准测试的顶部)。 LZO是一个包装。 QuickLZ C#实现有一些限制。无论如何,你可以和LZ4或Snappy一起去。 –
LZ4可以解压缩压缩文件吗? – zer0ne