循环程序的写法与速度对比

王志勇 发表于 2009年10月18日 20:04

下列测试都是在Windows XP系统SP3/IE 6.0/3G CPU/1G内存,Apache+PHP的环境中,如下程序:

<?$j=0;
$au=100000000;
for ($i=1; $i<=$au; $i++) $j++;
echo $j;?>

上述程序循环1亿次,运行结果:100000000,使用18秒完成。

<?$j=0;
$au=99999999;
for ($i=1; $i<=$au+1; $i++) $j++;
echo $j;?>

上述程序循环1亿次,使用21秒完成。

<?$j=0;
$au=100000000;
for ($i=1; $i<=$au+1; $i++) $j++;
echo $j;?>

上述程序循环100000001次,使用21秒完成。

上述的第1个和第2个程序中,不同的是“循环到”的方式不一样,第1个程序是直接循环到1亿,第2个程序则是在“循环到”做了一个运算,慢了3秒钟。如果是循环1000万次或以内,差别不大。因此,经过上述程序的测试,在“循环到”做运算,对程序的速度是有轻微影响的,尽可能避免在“循环到”这里做运算。

4条评论:
1   Goberl 2009-10-20 12:27
第二题中除了比较(<=)外,还额外运算了$au+1 1亿次啊
2   sunny 2009-10-21 00:00
从 底层汇编上进一步说>
for ($i=1; $i<=$au+1; $i++)
改为>
$i=1;
for ($i; $i<=$au+1; $i++)
更优越:>
3   唏嘘一世 2009-10-22 22:23
在FOR循环条件中加入运算,那样每循环一次就会做一次运算,速度肯定会受到些影响。
4   lostab 2009-11-07 19:14
这个真要学习了.

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

直接发送Trackback到此文章

说明:本评论系统不支持HTML代码。(您的留言需要审核,审核规则请见这里。)

王志勇:1980-09-26 (38周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2018年12月
2018年11月(30)
2018年10月(30)
2018年09月(17)
2016年-2017年(9)
2014年06月-09月(10)
2013年 +

2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2018 auiou.com All rights reserved.
此Blog程序由王志勇编写 已经发布在Arsue