for と foreach はどちらの方がパフォーマンスが優(yōu)れていますか? それとも、異なるデータを処理する際にそれぞれの利點(diǎn)があるのでしょうか? 誰(shuí)かが答えてくれると嬉しいです。
小伙看你根骨奇佳,潛力無(wú)限,來(lái)學(xué)PHP伐。
はいArrayList
這樣的可使用下標(biāo)進(jìn)行隨機(jī)訪問的數(shù)據(jù)結(jié)構(gòu),使用下標(biāo)訪問,要比foreach
的方式進(jìn)行順序訪問,速度要快一些。foreach
這樣寫法,使用的過程產(chǎn)生一個(gè)額外的對(duì)象Enumerator
、各アクセスにはより多くの操作が必要となり、パフォーマンスが低下します。
foreach
是通過GetEnumerator
獲得一個(gè)IEnumerator
對(duì)象,通過IEnumerator
對(duì)象執(zhí)行MoveNext()
方法和獲取Current
屬性がトラバースされます。
だってEnumerator
中,做了版本檢查處理
的工作,所以使用foreach
是線程安全
そうですfor
的效率通常來(lái)說是高于foreach
ですが、絶対とは言えません。
それではどうやって選べばいいのでしょうか?私の提案は、効率と安全性の両方を考慮して、複數(shù)のスレッドからアクセスできるいくつかのグローバル データ構(gòu)造オブジェクトで foreach
。而對(duì)本地變量,則使用for
を使用することです。
更新: 情報(bào)を確認(rèn)したところ、10W を超える配列の場(chǎng)合は foreach の方が効率的ですが、1W の配列の場(chǎng)合は for の方が依然として効率的であることがわかりました。
http://blog.csdn.net/w2cschoo...
結(jié)局のところ、最初に配列をカウントする必要がないので、foreach を使用することをお?jiǎng)幛幛筏蓼埂?