【问题标题】:Are there any free compression utilities that zip in real time like Xceed Real-Time Zip?有没有像 Xceed Real-Time Zip 这样实时压缩的免费压缩工具?
【发布时间】:2013-08-04 09:23:43
【问题描述】:

我需要做的是压缩来自外部服务的 64KB 文件块,然后将压缩数据块实时传输到浏览器。 Xceed Real-Time 非常棒,您可以设置文件的标题,然后在客户端将多个 64KB 块拼凑成一个完整的压缩文件。这很好用,您可以通过将多个文件放入循环中来轻松处理多个文件。

我的问题是:是否有免费的替代压缩实用程序可以匹配 Xceed 的复杂性?我需要一些可以压缩文件的一部分并将其流式传输到浏览器的东西。我见过的几乎所有免费替代品都需要在压缩之前访问整个文件。 Xceed 不错,就是太贵了。只是想知道是否有可以实现此目的的免费替代方案。谢谢!

【问题讨论】:

    标签: .net compression zip archive xceed


    【解决方案1】:

    您正在寻找的是流压缩方法。好消息是你有很多选择。另请注意,您必须考虑内存,因为某些解决方案(基于字典)可能需要大量内存,因此请进行测试和调整。

    为了让我的回答简短,我建议试试 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 的原始速度 图书馆。

    Snappy - https://code.google.com/p/snappy/

    Snappy 是一个压缩/解压缩库。它的目标不是 最大压缩,或与任何其他压缩的兼容性 图书馆;相反,它的目标是非常高的速度和合理的 压缩。

    有两个 C# 原生实现可用:

    QuickLZ - http://www.quicklz.com/

    QuickLZ 是世界上最快的压缩库,达到 308 每个内核 Mbyte/s。如果这样,它可以在商业许可下使用 已被收购或根据 GPL 1、2 或 3 发布任何内容 public 必须是开源的。

    本机实现 - 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 内置了这个功能。谢谢!
    • 我已经更新了答案。我确实删除了 FastLZ,因为它不太适合你。所以你有 4 个选项:LZ4、LZO、Snappy、QuickLZ(基准测试的顶部)。 LZO 是一个包装器。 QuickLZ C# 实现有一些限制。无论如何,你最好选择 LZ4 或 Snappy。
    • LZ4可以解压压缩文件吗?
    【解决方案2】:

    查看 SharpCompress,它是专门为像您这样的目的而编写的。我使用它并且非常适合我的解决方案。我们在重写之前使用了 Xceed。

    http://sharpcompress.codeplex.com/

    SharpCompress 是一个适用于 .NET/Mono/Silverlight/WP7 的压缩库,可以解压缩、解压缩、解压缩、解压缩 unbzip2 和 ungzip,具有只进读取和文件随机访问 API。实现了对 zip/tar/bzip2/gzip 的写支持。

    主要功能是支持不可搜索的流,因此可以动态处理大文件(即下载流)。

    【讨论】:

    • 你有没有例子说明如何使用 SharpCompress 实时压缩 64KB 块?使用 Xceed,内置功能可以为每个文件创建一个标头,然后将 64KB 块标记到该文件标头。 SharpCompress 有类似的功能吗?希望能举个例子!
    猜你喜欢
    • 2010-10-27
    • 1970-01-01
    • 2020-08-13
    • 2016-04-19
    • 1970-01-01
    • 2011-01-02
    • 2012-01-03
    • 2012-06-11
    • 1970-01-01
    相关资源
    最近更新 更多