我在兩個不同時間從某個源獲取數據作爲散列。我需要知道兩個哈希是否相同。我不需要知道哪些鍵值對有所不同。如何知道兩個散列數據是否相同 - 最快的方法
我想在一些地方(如數據庫)使用Digest :: MD5模塊存儲散列的md5sum,然後比較下一個接收到的散列的md5sum是否與之前存儲的md5sum相同。如果它不相同,那麼散列中的數據不同。
我的散列大小不是很大單個散列最多50個鍵。 Perl中有更好更快的方法嗎?
我在兩個不同時間從某個源獲取數據作爲散列。我需要知道兩個哈希是否相同。我不需要知道哪些鍵值對有所不同。如何知道兩個散列數據是否相同 - 最快的方法
我想在一些地方(如數據庫)使用Digest :: MD5模塊存儲散列的md5sum,然後比較下一個接收到的散列的md5sum是否與之前存儲的md5sum相同。如果它不相同,那麼散列中的數據不同。
我的散列大小不是很大單個散列最多50個鍵。 Perl中有更好更快的方法嗎?
對於這樣一個小的數據集,不需要過度優化事物。
你可以使用數據::比較:
use Data::Compare;
print 'structures of \%h and \%v are ',
Compare(\%h, \%v) ? "" : "not ", "identical.\n";
我假定這兩個散列變量是在單獨的進程。
散列(例如md5sums)不保證對於兩個不同的文本是唯一的。您需要進行全文比較才能確定。
如果您要比較大集的成員,那麼哈希值非常有用,因爲它減少了需要進行全文比較的次數。如果你只有兩個字符串進行比較,那只是浪費時間。
當然,如果罕見的誤報不是問題,那麼使用散列會節省存儲空間。
http://stackoverflow.com/questions/1273616/how-do-i-compare-two-hashes-in-perl-without-using-datacompare –
@mpapec - 那裏描述的方法如何更好更快? – virus
因爲我沒有看到您的解決方案,所以無法分辨。 –