【发布时间】:2014-11-27 22:33:35
【问题描述】:
我使用 Perl 哈希来存储 ip -> 主机名对。我有数百万。
我在哈希 %HOSTNAME{$ip} 中缓存 gethostbyip 系统调用。
内存不是问题。时间是。
在这种情况下,perl 哈希搜索的速度有多快?
如果我改用 MysqlDB 或 BerkleyDB 会更快吗?
【问题讨论】:
-
做一个基准测试。
-
Mysql 和 BerkleyDB 正在使用与普通哈希不同的外部存储,因此答案似乎很明显。
-
你会想要
$HOSTNAME{$ip},而不是%HOSTNAME{$ip}。 -
@salva,更准确地说,哈希查找速度不受哈希大小(O(1))的影响。
-
IPv4 地址只是 32 位数字。如果您只处理 IPv4,并且内存确实不是问题,那么最快的解决方案可能是包含 40 亿个元素的数组。
标签: perl hash berkeley-db