首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LZF可以使用不同的算法进行压缩

LZF可以使用不同的算法进行压缩
EN

Stack Overflow用户
提问于 2011-03-15 22:23:07
回答 2查看 860关注 0票数 2

我在我的应用程序中使用libLZF进行压缩。在文档中,有一条评论与我有关:

代码语言:javascript
复制
lzf_compress might use different algorithms on different systems and
even different runs, thus might result in different compressed strings
depending on the phase of the moon or similar factors.

我计划比较压缩后的数据,以了解输入是否相同。显然,如果使用不同的算法,那么压缩数据就会不同。有没有解决这个问题的办法?可能是一种每次都强制执行某个算法的方法?或者这句话在实践中从来都不是真的?毕竟,phase of the moon, or similar factors有点奇怪。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-15 22:51:51

“月相依赖”的原因是它们省略了一些数据结构的初始化,以便挤出一点性能(当然,只有在它不影响解压缩正确性的情况下)。就压缩库而言,这并不是什么稀奇的把戏。因此,如果您将压缩代码放在一个单独的、一次性的进程中,并且您的操作系统在将其移交给一个进程之前将其内存清零(所有“大”OSes都会这样做,但一些较小的进程可能不会这样做),那么您将始终得到相同的压缩结果。

另外,请注意lzfP.h中的以下内容:

代码语言:javascript
复制
/*
 * You may choose to pre-set the hash table (might be faster on some
 * modern cpus and large (>>64k) blocks, and also makes compression
 * deterministic/repeatable when the configuration otherwise is the same).
 */
#ifndef INIT_HTAB
# define INIT_HTAB 0
#endif

所以我认为你只需要在编译libLZF时使用#define INIT_HTAB 1来确定它,尽管在没有进一步分析的情况下不会对它下太大的赌注。

票数 6
EN

Stack Overflow用户

发布于 2011-03-15 22:24:48

动态解压,然后进行比较。

libLZF的网站声明“解压...基本上是(未优化的)memcpy速度”。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5313150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档