iLinux

自由、梦想、飞翔 --- Free Dream Soar

用户操作
[即时聊天] [发私信] [加为好友]
只爱LINUXID:forlinux
88659次访问,排名1072好友5人,关注者9
forlinux的文章
原创 83 篇
翻译 0 篇
转载 68 篇
评论 77 篇
只爱LINUX的公告
机遇+努力=成功
努力才会有希望...
点击这里给我发消息
最近评论
forlinux:抱歉,我也不记得地址啦。
forlinux:原始链接图片已丢失,现重新抓图上传,根据图中提示,即可方便到禁用该功能。
maxinliangGenius:大哥,你转的那里的文章,能不能说一下啊?
maxinliangGenius:大哥,你转的那里的文章,能不能说一下啊?
sknice:写的很好,受教了
文章分类
收藏
相册
只爱这一秒
.NET资源
.net Free soft
dotnet开源
Filehelper-Exp/Imp Data2DB
MSDN-library
Ajax Framework
jquery——The writte less,do more
prototype.js
prototype.js开发者文档
JAVA资源
java开源大全
中国IT实验室ECLIPSE专题
linux资源
202.96.64.144
ChinaUnix网友空间
Cooperative Linux(colinux)
OpenSSH For Windows
Oracle On Linux
Reactos(Wine Base)
Wine模拟器
健兔linux
成都理工大学FTP
班图LINUX
红帽Linux
长江大学FTP
鳥哥的Linux私房菜
lnux社区
linuxsir.org
linux伊甸园
linux公社
PHP资源
Apache with Open SSL
Apache软件历史版本
phpv.net
中日韩翻译
数据库相关
Oracle NetWorking FAQ
友情链接
baidu博客分站
SourceForge主页
漂在生活
闲云
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

转载  for、while、foreach性能比较-PHP篇收藏

新一篇: Visual Studio 2005 使用技巧一则 | 旧一篇: for和foreach性能比较

一般情况下,遍历一个数组有三种方法,for、while、foreach。其中最简单方便的是foreach。那么它们在操作和性能上存在什么差别,通常使用那种方法比较好。

下面先让我们来测试一下共同遍历一个有50000个下标的一维数组所耗的时间:

测试平台:
CPU:P-M725
内存:512M
硬盘:40G5400转
OS:WindowsXPSP2
WEB:apache2.0.54  php5.0.4

测试代码:

<?php
/*
  *@Author:Lilov
  *@Homepage:http://www.codesky.com
  *@E-mail:zhongjiechao@gmail.com
  *
  */

$arr=array();
for($i=0;$i<50000;$i  ){
$arr[]=$i*rand(1000,9999);
}

functionGetRunTime()
{
list($usec,$sec)=explode("",microtime());
return((float)$usec (float)$sec);
}
######################################
$time_start=GetRunTime();

for($i=0;$i<count($arr);$i  ){
$str.=$arr[$i];
}

$time_end=GetRunTime();
$time_used=$time_end-$time_start;

echo'Usedtimeoffor:'.round($time_used,7).'(s)<br><br>';
unset($str,$time_start,$time_end,$time_used);
######################################
$time_start=GetRunTime();

while(list($key,$val)=each($arr)){
$str.=$val;
}

$time_end=GetRunTime();
$time_used=$time_end-$time_start;

echo'Usedtimeofwhile:'.round($time_used,7).'(s)<br><br>';
unset($str,$key,$val,$time_start,$time_end,$time_used);
######################################
$time_start=GetRunTime();

foreach($arras$key=>$val){
$str.=$val;
}

$time_end=GetRunTime();
$time_used=$time_end-$time_start;
echo'Usedtimeofforeach:'.round($time_used,7).'(s)<br><br>';
######################################

?>

测试结果:

将三次测试结果求平均值:
分别对应for、while、foreach
0.1311650
0.1666853
0.1237440


  经过反复多次测试,结果表明,对于遍历同样一个数组,foreach速度最快,最慢的则是while。foreach比while大约快20"30左右。随后再把数组下标增加到500000、5000000测试结果也一样。但从原理上来看,foreach是对数组副本进行操作(通过拷贝数组),而while则通过移动数组内部指标进行操作,一般逻辑下认为,while应该比foreach快(因为foreach在开始执行的时候首先把数组复制进去,而while直接移动内部指标。),但结果刚刚相反。原因应该是,foreach是PHP内部实现,而while是通用的循环结构。

  所以,在通常应用中我更喜欢用foreach形式,简单,而且效率高。在PHP5下,  foreach还可以遍历类的属性。  

发表于 @ 2006年09月17日 12:37:00|评论(loading...)|编辑

新一篇: Visual Studio 2005 使用技巧一则 | 旧一篇: for和foreach性能比较

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 只爱LINUX