函数执行效率测试(foreach、for、while)

原创 2015年11月18日 16:38:14

一般来说,我们都认为在遍历数组的时候,foreach有着无可匹敌的优势,

而for和while两者之间的执行效率则没有太大的差别。

事实如何,我将借助foreach、for、while三个函数来说明如何测试函数的执行效率。

注:案例出自《高性能PHP应用开发》

测试代码如下:

<?php
$items = array_fill(0,100000,'1234567890');
reset($items);


$start = microtime();//函数执行时间需要以毫秒来计算时的开始时间
//$i = 0;
foreach ($items as $item)
{
//$i++;
$x = $item;
}
echo microtime()-$start;//函数执行时间需要以毫秒来计算时的结束时间
/*
 * foreach函数
 * ---------------------------
foreach ($items as $item)
{
$x = $item;
}
***while函数
-------------------------------
$i = 0;
while ($i<100000)
{
$x = $items[$i];
$i++;
}
***for函数
------------------------------------
$i=0;
for(;$i<100000;)
{
$j = $items[$i];
$i++;
}


$start = date('H:i:s');//函数执行时间需要以秒来计算时的开始时间
$end = date('H:i:s');//函数执行时间需要以秒来计算时的结束时间
*/
?>

测试结果表明,在执行数组时,foreach的确有着无可比拟的优势,for与while则相差不大。

另外就是一些测试函数执行时间的方法,相信很容易理解。

而foreach之所以在执行数组时有着无可比拟的速度,是由于它少了“++”这个操作,以及不需要用到“数组变量[索引]”这种方式去取值。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

测试for,foreach和Iterator遍历效率

今天突然间想起来之前看过一篇博客,说起了for和foreach遍历效率的区别,于是验证一番,得到如下结论。 对于数组而言,for和foreach遍历效率相差不大。 对于List而言,foreach和I...

C# for、while和foreach遍历产生GC

最近在网上看到了有关于Foreach遍历会产生GC的文章今天测试了下,在这里记录下怕忘记。 先上测试代码using UnityEngine; using System.Collections; usi...

Smarty标签运算,控制结构[if,for,foreach,section,while]

Smarty标签运算: 在页面上做简单的运算[temp5.html] 条件判断if 循环结构for foreach用得比较多,foreach例子从数据库取出的数据 <?php /* smarty h...

for和foreach那个效率更高?原因是什么?

写这篇文章的原因主要是在开发过程中突然有以下几个疑问,特抽出时间深度探究一下,以加深自身对php的理解。 1、作为一名phper,for和foreach循环遍历几乎每天都在使用,那么这两种遍历方式哪一...
  • bk_guo
  • bk_guo
  • 2017-06-16 10:47
  • 1396

array_walk 和 foreach, for 的效率的比较

通过小程序,判断array_walk 和 foreach, for的效率,通过小程序发现如下结果: 1、foreach的效率明显高于for,说明php对foreach函数进行了优化,如果同事可以采用f...

Iterator,for,forEach的遍历和效率

对应数据的遍历方式有很多,下面介绍下Iterator,for,forEach三种方式的遍历和执行效率问题 1.代码如下: /** * Iterator,for,forEach比较 * @aut...

C#中 for与foreach的效率比较

在很多情况下for和foreach具有同样的功能,选择for还是foreach很多人可能都是看自己的喜好,本测试试图通过 来真是测试数据来比较他们的执行效率。希望能给大家对他们的时候带来一些帮助。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)