perl中哈希和数组谁更快?

perl中哈希和数组谁更快?(在访问随即位置的数据时)应该是哈希更快,但是我编程看结果是数组快,不知道为什么。附上程序#thisprogramtesttheperform... perl中哈希和数组谁更快?(在访问随即位置的数据时)
应该是哈希更快,但是我编程看结果是数组快,不知道为什么。附上程序
#this program test the performance of hash and array in the aspect of speed.
#
@array;
%hash;
$number=50000;

$time1=time;
for($i=0;$i<$number;$i++){
$key=int(rand($numner));
$array[$key]=1;
}
$time2=time;
$time=$time2-$time1;
print"array store cost $time\n";

$time1=time;
for($i=0;$i<$number;$i++){
$key=int(rand($number));
$hash{$key}=1;
}
$time2=time;
$time=$time2-$time1;
print"hash store cost $time\n";

$time1=time;
for($i=1;$i<$number;$i++){
$key=int(rand($number));
$array[$key]++;
}
$time2=time;
$time=$time2-$time1;
print"the access of array cost $time\n";

$time1=time;
for($i=1;$i<$number;$i++){
$key=int(rand($number));
$hash{$key}++;
}
$time2=time;
$time=$time2-$time1;
print"the access of hash cost $time\n";

其中$number是循环的次数,可以根据机子的速度更改

大家讨论下
呵呵 谢谢1楼的

但是看了一些数据结构方面的书 还有网上说的
根据存储和查找的方式不同
在对象是随即查找数据的前提下的确应该是哈西更快些
但不知道为什么上面的程序跑出来是数组更快
展开
 我来答
maklive
2009-07-29 · 超过10用户采纳过TA的回答
知道答主
回答量:15
采纳率:0%
帮助的人:0
展开全部
呵呵,你这个蛮有意思。

确实是数组快,而且数组所占内存也小。

hash与数组比较优势在于它的key可以是字符,而数组的index只能是数字。但无论是读存速度还是消耗内存,hash都不如数组的。

补充:具体的我也不是很内行。。。不过你的问题可以考虑放到ChinaUnix的perl版去讨论,链接如下:

http://bbs3.chinaunix.net/forumdisplay.php?fid=25
最小风人生东6691
2012-08-01 · TA获得超过7.1万个赞
知道大有可为答主
回答量:6万
采纳率:0%
帮助的人:8228万
展开全部
其实哈希底层也是数组,你给哈希结构传递的每个键值最终通过一些列运算(一般来说是位运算)得到一个对应数组索引的无符号整形值。

你所做的测试随机数直接对应数组下标当然比哈希结果返回结果速度更快。

因为哈希结构多了一步哈希运算。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式