`
nakupanda
  • 浏览: 416133 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[流言终结者] PHP for / foreach / while 性能比较

 
阅读更多
我女喷友跟我说哦, 那个啥, 听别人说php中最好用foreach不要用for, 因为性能会好点.

我第一反应就是觉得没可能, 第二反应是想一下为什么别人会有这样的结论.

我猜测有的孩纸测试for时, 大概用了以下形式:
for($i=0; $i<count($array); $i++){
...
}


孩纸, 每次循环都要count一下$array里有多少东西, 这可是要耗资源的, 除非将来某个版本的PHP会对这种方式做优化.改为以下形式:
$arraySize = count($array);
for($i=0; $i<$arraySize; $i++){
...
}


PHP对foreach的内部优化估计也是这样的.

然后我就上网找了一下持有"foreach比for效率高"观点的孩纸的实验是怎么做的, 找到其中一个结果:

http://www.phpq.net/research/foreach-while-for.html

果然如我所想, TA在测试for的时候, 用了以下的形式:
for($i = 0; $i < count($arr); $i++){
$str .= $arr[$i];
}


我拿TA的实验用例改为:
$size = count($arr);
for($i = 0; $i < $size; $i++){
$str .= $arr[$i];

效率就上来了.

分享到:
评论
2 楼 u010620626 2017-03-07  
foreach是最快的,因为php的array内部元素之间有指针,就是list,直接指向下个元素的内存地址,所以遍历速度很快

for的问题在于,每次都要做一个hash table的查询。
1 楼 sdpfoue 2013-10-14  
http://www.php-internals.com/book/?p=chapt03/03-01-02-hashtable-in-php
这个看明白就懂了

相关推荐

    foreach、while、for性能比较

    ### foreach、while、for性能比较 在编程领域中,循环结构是实现重复操作的基本手段之一。根据不同的场景和需求,开发者可以选择使用`foreach`、`while`或`for`等不同类型的循环。本文将深入探讨这三种循环在PHP中...

    For 和 Foreach 的效率问题

    在效率方面,`for`和`foreach`的差距通常不会显著到影响大多数应用的性能。然而,在特定情况下,比如需要大量遍历操作并且对性能敏感时,可能需要考虑两者的选择: 1. **初始化开销**:`foreach`需要创建一个迭代器...

    php foreach、while性能比较

    foreach和while是两种常用的遍历数组的方式,它们在性能上可能会有所不同。本知识点将详细解释foreach和while在数组遍历中的行为差异,以及如何在不同场景下选择合适的遍历方法。 首先,foreach是PHP提供的一个简洁...

    练习使用for、while、do while、foreach in等循环语句

    在本主题中,我们将深入探讨四种常见的循环语句:for、while、do while以及C#中的foreach,并通过实例演示如何使用它们来实现有趣的字符图形输出。 首先,`for`循环是一种预定义迭代次数的循环,常用于已知循环次数...

    浅谈php中的循环while、do…while、for、foreach四种循环

    本文将详细讲解PHP中的四种循环:while、do…while、for和foreach。 1. while循环 while循环是基于条件执行的循环。它会持续执行代码块,只要设定的条件为真。基本语法如下: ```php while(条件){ // 要循环执行的...

    for和forEach性能对比.md

    for和forEach性能对比.md

    for foreach效率测试代码

    在"for foreach效率测试代码"中,我们看到的是对这两种循环方式进行性能比较,执行1000000万次字符串遍历操作。这种测试通常是为了评估在大量数据处理时,哪种循环方式更高效。 在大多数情况下,`foreach`循环看...

    for,foreach,iterator的用法和区别

    "for、foreach、iterator的用法和区别" 在 Java 编程语言中,for、foreach 和 iterator 是三种常用的遍历数组和集合的方法。它们之间有相似之处,但也存在着许多不同之处。 相同点:三者都可以用来遍历数组和集合...

    PHP 数组 for foreach 循环 array_column函数.rar

    `for`和`foreach`循环是处理数组的两种主要方式,而`array_column`函数则是一个强大的工具,允许我们从多维数组中提取特定列的数据。 1. **for循环**:在PHP中,`for`循环通常用于迭代已知次数的情况。它的语法结构...

    详解Java中的增强 for 循环 foreach

    Java 中的增强 for 循环 foreach 是一种语法糖,它能够提高性能,并减少代码出错的几率。foreach 循环是用来对数组或者集合进行遍历的语法,具体语法如下:for(元素类型 ele : 数组名/Iterable 实例){}。 在编译...

    浅谈php中的循环while、do...while、for、foreach四种循环

    本文将详细解析PHP中的四种主要循环结构:while、do...while、for以及foreach,并通过实例来展示它们的工作原理和用法。 1. while循环 while循环在满足指定条件时重复执行代码块。它的基本语法是: ```php while...

    详谈js中标准for循环与foreach(for in)的区别

    - 在性能方面,`for`循环通常比`forEach`更快,因为后者涉及到函数调用和隐式创建的作用域,但在大多数现代浏览器中,这种差距可能并不明显。 综上所述,虽然`for`循环和`forEach`在基础使用上都可以完成数组遍历...

    C#中foreach循环对比for循环的优势和劣势

    循环语句为众多程序员们提供了很大的便利,有while、do…while、for和 foreach。而且foreach语句很简洁,但是它的优点不仅仅在于此,它的效率也是最高的。本文将详细给大家关于C#中foreach循环对比for循环的优势和...

    PHP循环控制语句:while\for\

    在提供的压缩包文件中,"循环控制语句.php"可能包含了`while`和`for`循环的实例,而"foreach循环.php"则可能详细解释了`foreach`循环及其应用。通过学习这些文件,你可以深入理解PHP中的循环控制语句,并在实际项目...

    深入for,while,foreach遍历时间比较的详解

    本篇文章深入探讨了for, while, 和foreach三种循环在遍历数组时的时间性能比较。针对在处理大量数据时,选择合适的循环结构可以提高代码的执行效率,作者通过实验和代码示例给出了详尽的分析。以下是对这篇文章中所...

    C#中循环语句:while、for、foreach的使用

    本文将深入探讨C#中的三种主要循环语句:while、for和foreach,并通过实例来解释它们的使用方法。 首先,我们来看`while`循环。`while`循环是最基础的循环结构,它的执行依赖于一个布尔表达式。只要这个表达式为`...

    PHP 基础实例教程(PHP网页实例版)

    PHP for和foreach循环 PHP do...while循环 PHP break/continue/exit PHP 数组 PHP 数字索引数组 PHP 非数字索引数组 PHP 多维数组 PHP 数组排序 PHP 多维数组排序 PHP 随机数组排序 PHP 文件内容载入数组 PHP 数组...

    测试mybatis里foreach用法

    在MyBatis中,`&lt;foreach&gt;`标签是一个非常重要的元素,它主要用于动态SQL语句的构建,尤其是在处理集合数据类型如List、Array、Map时。`&lt;foreach&gt;`标签的使用可以极大地提高代码的可读性和可维护性,避免了传统的字符...

    全面解析JavaScript里的循环方法之forEach,for-in,for-of

    在JavaScript中,有三种主要的循环方法:`forEach`、`for-in`和`for-of`,每种都有其特定的用途和特点。 `forEach`方法是ES5引入的一个数组方法,简化了对数组元素的遍历。例如: ```javascript myArray.forEach...

Global site tag (gtag.js) - Google Analytics