【问题标题】:Compression/Decompression for DataSet or any .Net ObjectDataSet 或任何 .Net 对象的压缩/解压缩
【发布时间】:2011-06-28 03:26:05
【问题描述】:

我正在开发一个 WPF 应用程序,我想在其中加密和压缩大量数据集或对象 (

  1. 我想要高效的压缩类(希望坚持使用 .Net 压缩类)。
  2. 压缩和解压缩所需的时间更少。
  3. 压缩率高,而数据检索应为 100%。

谁能向我推荐压缩类(DeflateStream/GzipStream)。

谢谢
主播

【问题讨论】:

  • 我之前一直走这条路,发现尺寸必须非常大才能获得压缩后的 ROI。发送大数据需要时间,但压缩和解压缩可能需要更多时间。双向进行一些测试。
  • 但是为了实现的目的,我们必须使用加密和压缩。它可以是轻量级的压缩/解压缩,不需要时间或使数据变得更重。

标签: compression http-compression gzipstream data-compression deflatestream


【解决方案1】:

大多数人会混淆“压缩的最终大小”==“更好的网络性能”。一般来说,使用“优于deflate”类压缩算法可以减少传输带宽,但会增加总传输时间(压缩+传输+解压缩)。从这个意义上说,LZ 类压缩器似乎是最好的。最快的实现可以是QuickLZLZ4。它们都有 C# 版本。但是,它们的实现并不完全像例如DeflateStream(实际上使用起来更简单)。 QuickLZ 在网络相关应用程序上的使用量不断增加,而 LZ4 最近被修补到 Apache Hadoop 源主干中,而不是 Google 的 Snappy。

如果您需要更多压缩,您可以获取由托管 LZMA 压缩/解压缩方法组成的 LZMA SDK。但是,我应该警告你,LZMA 的内存消耗通常非常高(取决于参数)。因此,生成多个 LZMA 驱动的线程可能不是您真正想要的。

如果您仍然需要越来越多的压缩,请查看 PPM 或按位 CM 类算法。 PPM 在文本数据方面非常出色,并且具有平均速度(通常为 2-3 MiB/秒)。另一方面,CM 在二进制数据上非常好。它们的内存消耗可能很高(取决于参数)并且非常慢(1 MiB/秒到甚至几个字节/秒,取决于算法)。不幸的是,您可能只能在 Internet 上找到 PPM .NET 实现。但是,由于高度复杂,在 .NET 中很难找到 CM。我在 .NET 中编写了order0 bitwise coder,如果您确实需要,可以将其扩展为带有其他模型的适当 CM。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-30
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    相关资源
    最近更新 更多