使用gperf安全地生成完美的哈希函数吗?

时间:2011-03-25 12:28:48

标签: c++ linux open-source 64-bit gnu

我现在正在考虑使用 gperf 生成的哈希函数来替换旧的哈希函数,但我不知道它是否安全,并且会增加我们的维护成本。

可靠性系统复杂性是我们的首要考虑因素。

是否有人在大项目中使用过gperf生成的哈希函数?

在我的项目中使用它是否安全?

BTW,我们的项目是一个C ++项目,在64位Linux机器上运行。

提前致谢!

2 个答案:

答案 0 :(得分:4)

我自己从不使用API​​,但是, 在this的写作中,似乎是从90年代后期开始,他们表明GPERF已用于TAO,gnu缩进以及其他一些应用程序。

已经出现了一段时间,很可能会被淘汰出局。 Here's一个有趣的开发人员写作。

答案 1 :(得分:2)

众所周知,gperf效果很好。就此而言,是的,它是“安全的”。

复杂性通常是读取2个字符,执行2个表查找和一个字符串比较的顺序。可靠性是100%。如果出现问题,您会收到错误消息,否则会出现错误消息。

维护成本介于“低”和“不存在”之间,您需要弄清楚如何编写输入文件一次,然后通过gperf 运行 ,并编译它。这是每个10到20年历史的编译器可以理解的简单C代码。无论何时想要查找值,都要调用查找函数,这就是所有要做的事情。

如果你改变它,你需要再次通过gperf运行输入文件,显然......否则就是这样。如果您的密钥列表没有变化,您再也不需要做任何事情了。我在几个项目中使用了gperf,完全满意。