1

我在两个不同的时间从某个来源获取数据作为哈希值。我需要知道两个哈希是否相同。我不需要知道哪些键值对不同。

我正在考虑在某个地方(例如数据库)使用 Digest::MD5 模块存储哈希的 md5sum,然后比较下一个接收到的哈希的 md5sum 是否与之前存储的 md5sum 相同。如果不相同,则散列中的数据不同。

我的哈希大小不是很大,单个哈希中最多 50 个键。perl 中还有其他更好更快的方法吗?

4

2 回答 2

1

对于这么小的数据集,没有必要过度优化事物。

您可以使用数据::比较:

use Data::Compare;
print 'structures of \%h and \%v are ',
   Compare(\%h, \%v) ? "" : "not ", "identical.\n";
于 2014-02-14T16:39:55.190 回答
0

我假设这两个哈希变量在不同的进程中。

不保证哈希(例如 md5sums)对于两个不同的文本是唯一的。您需要进行全文比较才能确定。

如果您要比较大型集合的成员,散列很有用,因为它减少了您需要进行全文比较的次数。如果您只有两个字符串要比较,那只是浪费时间。

当然,如果罕见的误报不是问题,那么使用散列将节省存储空间。

于 2014-02-14T16:49:27.053 回答