答案 0 :(得分:19)
答案 1 :(得分:5)
是的,有一个解决方案。实现GZip非常简单。你需要一个Inflater和CRC32,再加上阅读标题/预告片。不幸的是,java.util.zip.Inflater
仅占用byte[]
,这是次优的(直接缓冲区的效率会提高一倍)。然而,使用非直接缓冲区和ByteBuffer.array()是一种选择。
内置的java.util.zip.CRC32
非常慢,而reimplementing it in java是迈向性能的一个很好的一步。 com.jcraft.jzlib
offers pure java implementation(几乎看起来像纯C),并且可以用直接缓冲区替换byte [] w。由于边界检查太多而无法执行如此深的内联,因此与inflater(decomppress)相比,库有点慢。然而,压缩速度更快。