我正在编写一个压缩库作为一个小的项目,我已经足够了(我的库可以提取任何标准的gzip文件,以及生成兼容的(但肯定不是最佳的)gzip输出)是时候计算了一个有意义的块终止策略.目前,我只是在每32k输入(LZ77窗口大小)之后关闭块,因为它是通用的并且快速实现 - 现在我回过头来尝试实际提高压缩效率.
该放气的规格只有这样说的:"压缩机终止块时,它确定开始用新鲜的树一个新的模块将是有益的,或者当块大小填补了压缩机的缓冲块",这是不是所有的这很有帮助.
我通过SharpZipLib代码进行了排序(因为我认为这将是一个可读的开源实现),并发现它每16k字节的输出终止一个块,忽略输入.这很容易实现,但似乎必须有一些更具针对性的方法,特别是考虑到规范中的语言"确定用新鲜树开始新块将是有用的".
那么,是否有人对新战略或现有战略的例子有任何想法?
提前致谢!