请压缩和解压缩方面的朋友帮忙看看
本人尝试将内存块进行压缩
目前使用的是HUFFMAN,也就是ZIP压缩
但是这个查字典方式的压缩速度实在太抓狂了
本人的需求是:实时处理 [注意,实时是个关键]
要求将内存块,例如400KB,在硬件比如Intel E2140 CPU,单核心占用下,希望在0.1秒内完成压缩,时间越短越好
但是这种字典方式的压缩速度达不到需求
不知道有没有更好的方法能在尽可能短的时间内完成压缩,对压缩率的要求,倒不是非常重要,只要不低于ZIP方式85%就可以
有没有朋友推荐好的实时压缩算法,当然有参考代码最好
[解决办法]
你可以看看gzip的压缩方法,它支持动态压缩和静态压缩
动态压缩压缩效率高,静态压缩效率要高一些
[解决办法]
你可以强制使用静态霍夫曼编码,简单使用gzip,它会建立动态树,并将动态编码和静态编码的结果比较来取压缩比较好的,这样就浪费时间了
需要你对压缩流程做一个处理,只使用静态编码,这样效率上应该能提高不少
[解决办法]
E2140在0.1s里已经有160,000,000CPU周期了,分摊到400KB里,每字节可以摊到390周期,应该可以执行200条以上的指令。似乎应该够用了。
我想你努力优化一下程序也许就能解决。
[解决办法]
静态编码就是用历史数据作依据生成的编码树,实际压缩时不再生成新树了。如果你的块数据里各不同码值出现的几率基本稳定,就可以使用静态编码来加快压缩速度。
此外,你的机器是单核的?否则怎么会因为一个压缩线程就耗尽CPU呢?现在的机器应该至少双核了吧,换一台就好。
[解决办法]
LZ有没有看过以前生成的编码里最长的码位有多大?超过32位没有?
[解决办法]