2014-02-14 25 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)不保證對於兩個不同的文本是唯一的。您需要進行全文比較才能確定。

如果您要比較大集的成員,那麼哈希值非常有用,因爲它減少了需要進行全文比較的次數。如果你只有兩個字符串進行比較,那只是浪費時間。

當然,如果罕見的誤報不是問題,那麼使用散列會節省存儲空間。

相關問題