gpt4 book ai didi

c++ - LZF 可能会使用不同的算法进行压缩

转载 作者:太空狗 更新时间:2023-10-29 23:34:12 25 4
gpt4 key购买 nike

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

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.

我打算比较压缩数据以了解输入是否相同。显然,如果使用不同的算法,那么压缩后的数据就会不同。这个问题有解决办法吗?可能是一种每次都强制执行某种算法的方法?或者这个评论在实践中是不是真的?毕竟,月相或类似因素有点奇怪。

最佳答案

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

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

/*
* 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 使其具有确定性,但如果不进行进一步分析,也不会过分押注它。

关于c++ - LZF 可能会使用不同的算法进行压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5313150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com