1
10
简短的回答:我会选像16K的。 长回答: zip正在使用放气算法进行压缩( http://en.wikipedia.org/wiki/DEFLATE )。deflate是ziv lempel welch(在维基百科中搜索lzw)的一种味道。deflate使用LZ77和Huffman编码。 这是一个字典压缩,据我所知,从算法的角度来看,将数据输入放气阀时使用的缓冲区大小应该几乎没有影响。LZ77最大的影响是字典大小和滑动窗口,它们不受示例中缓冲区大小的控制。 我认为你可以尝试不同的缓冲区大小,如果你想,并绘制一个图表,但我相信你不会看到压缩比有任何显著的变化(3/80000=0.00375%)。 缓冲区大小对速度的影响最大,这是由于调用fileinputstream.read和zos.write时执行的开销代码的数量。从这个角度来看,你应该考虑到你得到了什么,花了什么。 当从1字节增加到1024字节时,您会丢失1023字节(理论上),并且在.read和.write方法中会减少大约1024个开销时间。 但是,当从1K增加到64K时,您将花费63K,这将使开销减少64倍。 所以这伴随着收益递减,所以我会选择中间的某个地方(比如16K),并坚持下去。 |
2
0
取决于您拥有的硬件(磁盘速度和文件搜索时间)。我想说,如果你不想压缩最后一滴性能,可以选择4K到64K之间的任何大小。因为它是一个短期存在的对象,无论如何它都会很快被收集起来。 |