两段代码的执行速度测试~~
今天偶然想到一个有趣的测试,使用while或者for等很容易构成循环体,而使用函数自身调用也可以构成循环体,哪种更快呢?<?php
$timestamp = time();
$mtime = explode(' ', microtime());
$starttime = $mtime + $mtime;
while($a <100){
echo $a." ";
$a++;
}
$mtime = explode(' ', microtime());
$totaltime = number_format(($mtime + $mtime - $starttime), 6);
echo "<br>".$totaltime."<br>";
?>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
0.000286
<?php
$timestamp = time();
$mtime = explode(' ', microtime());
$starttime = $mtime + $mtime;
a();
function a($a=''){
echo $a." ";
$a++;
$a<100 && a($a);
}
$mtime = explode(' ', microtime());
$totaltime = number_format(($mtime + $mtime - $starttime), 6);
echo "<br>".$totaltime."<br>";
?>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
0.000587 递归需要堆栈,需要的内存更大
具体原理不懂,以上纯属猜测 我后来又测试了下,在循环次数较小的时候反而函数递归执行效率更快,看来的确是由于函数递归形成未能自动释放内存的堆影响了多次循环的效率了~ 不懂 帮顶 下面是引用oghuz于2005-10-14 18:17发表的:
不懂 帮顶 学习了
心雨动网的无限分类是如何实现的呢?
也是递归吗?
小白同学 下面是引用姜运涛于2005-10-15 08:06发表的:
学习了
心雨动网的无限分类是如何实现的呢?
也是递归吗?
小白同学
定义了一个类,递归和循环都有使用的~所以想起测试下速度 涛涛在偷技术 下面是引用xchange于2005-10-15 08:45发表的:
涛涛在偷技术
你不說的話是不是小白就全告訴我了?
不BS你你就會不爽 居然打出繁体字来……诡异啊……