搜索

首页  >  问答  >  正文

php - for与foreach哪个更快?

for与foreach哪个性能更好一些?还是处理不同的数据有各自的优点?希望大神给解答一下.

伊谢尔伦伊谢尔伦2794 天前621

全部回复(3)我来回复

  • 为情所困

    为情所困2017-05-16 13:10:54

    ArrayList这样的可使用下标进行随机访问的数据结构,使用下标访问,要比foreach的方式进行顺序访问,速度要快一些。foreach这样写法,使用的过程产生一个额外的对象Enumerator,而且每次访问需要更多的操作,降低性能。

    foreach是通过GetEnumerator获得一个IEnumerator对象,通过IEnumerator对象执行MoveNext()方法和获取Current属性进行遍历的。

    由于Enumerator中,做了版本检查处理的工作,所以使用foreach线程安全

    所以for的效率通常来说是高于foreach的,但话也不能说是绝对。

    那么如何选择呢?我的建议是,在一些全局的,多线程可以访问的数据结构对象,使用foreach。而对本地变量,则使用for,效率和安全兼顾!


    更新:刚刚查了下资料,发现对于10W级以上的数组,foreach效率会更高,但对于1W级的数组,还是for效率高。
    http://blog.csdn.net/w2cschoo...

    回复
    0
  • 世界只因有你

    世界只因有你2017-05-16 13:10:54

    foreach
    特别是php7 修改了array的数据结构后 foreach更快了

    回复
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:10:54

    遍历数组还是用foreach吧,毕竟不用先统计数组。

    回复
    0
  • 取消回复