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楼的
但是看了一些数据结构方面的书 还有网上说的
根据存储和查找的方式不同
在对象是随即查找数据的前提下的确应该是哈西更快些
但不知道为什么上面的程序跑出来是数组更快 展开
应该是哈希更快,但是我编程看结果是数组快,不知道为什么。附上程序
#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楼的
但是看了一些数据结构方面的书 还有网上说的
根据存储和查找的方式不同
在对象是随即查找数据的前提下的确应该是哈西更快些
但不知道为什么上面的程序跑出来是数组更快 展开
展开全部
呵呵,你这个蛮有意思。
确实是数组快,而且数组所占内存也小。
hash与数组比较优势在于它的key可以是字符,而数组的index只能是数字。但无论是读存速度还是消耗内存,hash都不如数组的。
补充:具体的我也不是很内行。。。不过你的问题可以考虑放到ChinaUnix的perl版去讨论,链接如下:
http://bbs3.chinaunix.net/forumdisplay.php?fid=25
确实是数组快,而且数组所占内存也小。
hash与数组比较优势在于它的key可以是字符,而数组的index只能是数字。但无论是读存速度还是消耗内存,hash都不如数组的。
补充:具体的我也不是很内行。。。不过你的问题可以考虑放到ChinaUnix的perl版去讨论,链接如下:
http://bbs3.chinaunix.net/forumdisplay.php?fid=25
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询