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.
小伙看你根骨奇佳,潛力無限,來學(xué)PHP伐。
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
這樣的可使用下標(biāo)進行隨機訪問的數(shù)據(jù)結(jié)構(gòu),使用下標(biāo)訪問,要比foreach
的方式進行順序訪問,速度要快一些。foreach
這樣寫法,使用的過程產(chǎn)生一個額外的對象Enumerator
,而且每次訪問需要更多的操作,降低性能。
foreach
是通過GetEnumerator
獲得一個IEnumerator
對象,通過IEnumerator
對象執(zhí)行MoveNext()
方法和獲取Current
屬性進行遍歷的。
由于Enumerator
中,做了版本檢查處理
的工作,所以使用foreach
是線程安全
所以for
的效率通常來說是高于foreach
的,但話也不能說是絕對。
那么如何選擇呢?我的建議是,在一些全局的,多線程可以訪問的數(shù)據(jù)結(jié)構(gòu)對象,使用foreach
。而對本地變量,則使用for
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
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...??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.