2014-02-14 26 views
1

我在两个不同时间从某个源获取数据作为散列。我需要知道两个哈希是否相同。我不需要知道哪些键值对有所不同。如何知道两个散列数据是否相同 - 最快的方法

我想在一些地方(如数据库)使用Digest :: MD5模块存储散列的md5sum,然后比较下一个接收到的散列的md5sum是否与之前存储的md5sum相同。如果它不相同,那么散列中的数据不同。

我的散列大小不是很大单个散列最多50个键。 Perl中有更好更快的方法吗?

+0

http://stackoverflow.com/questions/1273616/how-do-i-compare-two-hashes-in-perl-without-using-datacompare –

+0

@mpapec - 那里描述的方法如何更好更快? – virus

+0

因为我没有看到您的解决方案,所以无法分辨。 –

回答

1

对于这样一个小的数据集,不需要过度优化事物。

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

use Data::Compare; 
print 'structures of \%h and \%v are ', 
    Compare(\%h, \%v) ? "" : "not ", "identical.\n"; 
0

我假定这两个散列变量是在单独的进程。

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

如果您要比较大集的成员,那么哈希值非常有用,因为它减少了需要进行全文比较的次数。如果你只有两个字符串进行比较,那只是浪费时间。

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

相关问题