찾다

 >  Q&A  >  본문

php - for와 foreach 중 어느 것이 더 빠릅니까?

foreach와 foreach 중 어느 것이 더 나은 성능을 갖고 있나요? 아니면 다른 데이터를 처리하는 데 있어 고유한 장점이 있나요? 누군가 답변해 주셨으면 좋겠습니다.

伊谢尔伦伊谢尔伦2794일 전623

모든 응답(3)나는 대답할 것이다

  • 为情所困

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

    아래 첨자를 사용하여 무작위로 액세스할 수 있는 ArrayList와 같은 데이터 구조의 경우 아래 첨자를 사용한 액세스가 foreach를 사용한 순차 액세스보다 빠릅니다. foreach는 이런 방식으로 작성되며, 사용된 프로세스는 추가 개체 Enumerator를 생성하며, 각 액세스에는 더 많은 작업이 필요하므로 성능이 저하됩니다. ArrayList这样的可使用下标进行随机访问的数据结构,使用下标访问,要比foreach的方式进行顺序访问,速度要快一些。foreach这样写法,使用的过程产生一个额外的对象Enumerator,而且每次访问需要更多的操作,降低性能。

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

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

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

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

    foreachGetEnumerator를 통해 IEnumerator 개체를 획득하고 IEnumeratorMoveNext()를 실행합니다. code> 객체.code> 메소드를 사용하여 순회를 위한 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에서는 배열의 데이터 구조를 수정한 후 foreach가 더 빨라졌습니다

    회신하다
    0
  • 给我你的怀抱

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

    배열을 순회하려면 foreach를 사용하는 것이 더 좋습니다. 결국 배열을 먼저 계산할 필요가 없습니다.

    회신하다
    0
  • 취소회신하다