Java - 并行化Gzip

am3*_*692 5 java parallel-processing gzip

我被指派在Java 7中并行化GZip,我不确定哪个是可能的.

作业是:

  • 使用给定数量的线程并行化gzip
  • 每个线程使用1024 KiB块,使用前一个块中的最后32个KiB块作为字典.有一个选项可以不使用dicitionary
  • 从Stdin和stdout读取

我尝试过的:

  • 我尝试过使用GZIPOutputStream,但似乎没有办法隔离和并行化deflate(),我也无法访问deflater来改变字典.我尝试从GZIPOutputStream扩展,但它似乎没有按照我的意愿行事,因为我仍然无法隔离压缩/放气.
  • 我尝试使用Deflater启用wrap并使用FilterOutputStream输出压缩字节,但我无法使其以GZip格式正确压缩.我做了所以每个线程都有一个压缩器,它将写入一个字节数组,然后它将写入OutputStream.

我不确定我的方法是否错误或完全采取了错误的方法.谁能指出我为这个项目使用哪些类的正确方向?

小智 5

这里有一个正确的并行实现,它完全符合您的要求:

https://github.com/shevek/parallelgzip


Pet*_*rey 1

要使进程并发,您需要具有可以并发且独立运行的部分代码。大多数压缩算法被设计为按顺序运行,其中每个字节都取决于之前出现的每个字节。

同时进行压缩的唯一方法是更改​​算法(使其与现有方法不兼容)