for と foreach はどちらの方がパフォーマンスが優れていますか? それとも、異なるデータを処理する際にそれぞれの利点があるのでしょうか? 誰かが答えてくれると嬉しいです。
为情所困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...