php - Qu'est-ce qui est le plus rapide, for ou foreach?
伊谢尔伦2017-05-16 13:08:54
0
3
630
Lequel a les meilleures performances, pour ou pour chaque ? Ou ont-ils leurs propres avantages dans le traitement de différentes données ? J'espère que quelqu'un pourra me donner une réponse.
Pour les structures de données telles que ArrayList accessibles de manière aléatoire à l'aide d'indices, l'accès à l'aide d'indices est plus rapide que l'accès séquentiel à l'aide de foreach. foreach est écrit de cette manière, et le processus utilisé génère un objet supplémentaire Enumerator, et chaque accès nécessite plus d'opérations, réduisant les performances. ArrayList这样的可使用下标进行随机访问的数据结构,使用下标访问,要比foreach的方式进行顺序访问,速度要快一些。foreach这样写法,使用的过程产生一个额外的对象Enumerator,而且每次访问需要更多的操作,降低性能。
foreach obtient un objet IEnumerator via GetEnumerator et exécute MoveNext() via IEnumerator code> objet. code> et obtenez l'attribut Current pour le parcours.
Puisque Enumerator effectue le travail de vérification de version, l'utilisation de foreach est thread safe
Donc, l'efficacité de for est généralement supérieure à celle de foreach, mais on ne peut pas dire qu'elle soit absolue. 🎜
🎜Alors comment choisir ? Ma suggestion est d'utiliser foreach pour certains objets de structure de données globales accessibles par plusieurs threads. Pour les variables locales, utilisez for, qui prend en compte à la fois l'efficacité et la sécurité ! 🎜
🎜
🎜Mise à jour : je viens de vérifier les informations et j'ai découvert que pour les tableaux supérieurs à 10 W, foreach est plus efficace, mais pour les tableaux de 1 W, for est toujours plus efficace. 🎜http://blog.csdn.net/w2cschoo...🎜
Pour les structures de données telles que
ArrayList
accessibles de manière aléatoire à l'aide d'indices, l'accès à l'aide d'indices est plus rapide que l'accès séquentiel à l'aide deforeach
.foreach
est écrit de cette manière, et le processus utilisé génère un objet supplémentaireEnumerator
, et chaque accès nécessite plus d'opérations, réduisant les performances.ArrayList
这样的可使用下标进行随机访问的数据结构,使用下标访问,要比foreach
的方式进行顺序访问,速度要快一些。foreach
这样写法,使用的过程产生一个额外的对象Enumerator
,而且每次访问需要更多的操作,降低性能。foreach
是通过GetEnumerator
获得一个IEnumerator
对象,通过IEnumerator
对象执行MoveNext()
方法和获取Current
属性进行遍历的。由于
Enumerator
中,做了版本检查处理
的工作,所以使用foreach
是线程安全
所以
for
的效率通常来说是高于foreach
的,但话也不能说是绝对。那么如何选择呢?我的建议是,在一些全局的,多线程可以访问的数据结构对象,使用
foreach
。而对本地变量,则使用for
foreach
obtient un objetIEnumerator
viaGetEnumerator
et exécuteMoveNext()
viaIEnumerator
code> objet. code> et obtenez l'attributCurrent
pour le parcours.Puisque
Donc, l'efficacité deEnumerator
effectue le travail devérification de version
, l'utilisation deforeach
estthread safe
for
est généralement supérieure à celle deforeach
, mais on ne peut pas dire qu'elle soit absolue. 🎜 🎜Alors comment choisir ? Ma suggestion est d'utiliserforeach
pour certains objets de structure de données globales accessibles par plusieurs threads. Pour les variables locales, utilisezfor
, qui prend en compte à la fois l'efficacité et la sécurité ! 🎜 🎜 🎜Mise à jour : je viens de vérifier les informations et j'ai découvert que pour les tableaux supérieurs à 10 W, foreach est plus efficace, mais pour les tableaux de 1 W, for est toujours plus efficace. 🎜http://blog.csdn.net/w2cschoo...🎜foreach
Surtout en php7, après avoir modifié la structure des données du tableau, foreach est plus rapide
Il est préférable d'utiliser foreach pour parcourir le tableau. Après tout, il n'est pas nécessaire de compter le tableau en premier.