【问题标题】:How to know two hash data are same or not-- fastest approach如何知道两个哈希数据是否相同——最快的方法
【发布时间】:2014-02-15 00:49:27
【问题描述】:

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

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

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

【问题讨论】:

  • @mpapec - 那里描述的方法如何更好更快?
  • 无法判断,因为我没有看到您的解决方案。
  • 这两个哈希是否在同一个进程中?
  • 值总是字符串吗?

标签: perl md5sum


【解决方案1】:

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

你可以使用 Data::Compare:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2010-12-18
      • 2010-11-24
      • 2011-09-07
      • 2023-04-01
      • 1970-01-01
      • 2014-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多