Yang manakah mempunyai prestasi yang lebih baik, untuk atau foreach? Atau adakah mereka mempunyai kelebihan tersendiri dalam memproses data yang berbeza, saya harap seseorang boleh memberi saya jawapan.
Untuk struktur data seperti ArrayList yang boleh diakses secara rawak menggunakan subskrip, akses menggunakan subskrip adalah lebih pantas daripada akses berjujukan menggunakan foreach. foreach ditulis dengan cara ini dan proses yang digunakan menghasilkan objek tambahan Enumerator dan setiap akses memerlukan lebih banyak operasi, mengurangkan prestasi. ArrayList这样的可使用下标进行随机访问的数据结构,使用下标访问,要比foreach的方式进行顺序访问,速度要快一些。foreach这样写法,使用的过程产生一个额外的对象Enumerator,而且每次访问需要更多的操作,降低性能。
foreach memperoleh objek IEnumerator melalui GetEnumerator dan melaksanakan MoveNext() melalui IEnumerator code> object code> dan dapatkan atribut Current untuk traversal.
Memandangkan Enumerator melakukan kerja version checking, menggunakan foreach adalah thread safe
Jadi kecekapan for biasanya lebih tinggi daripada foreach, tetapi ia tidak boleh dikatakan mutlak. 🎜
🎜Jadi bagaimana untuk memilih? Cadangan saya ialah menggunakan foreach untuk beberapa objek struktur data global yang boleh diakses oleh berbilang benang. Untuk pembolehubah setempat, gunakan for, yang mengambil kira kecekapan dan keselamatan! 🎜
🎜
🎜Kemas kini: Saya baru sahaja menyemak maklumat dan mendapati bahawa untuk tatasusunan melebihi 10W, foreach adalah lebih cekap, tetapi untuk tatasusunan 1W, kerana masih lebih cekap. 🎜http://blog.csdn.net/w2cschoo...🎜
Untuk struktur data seperti
ArrayList
yang boleh diakses secara rawak menggunakan subskrip, akses menggunakan subskrip adalah lebih pantas daripada akses berjujukan menggunakanforeach
.foreach
ditulis dengan cara ini dan proses yang digunakan menghasilkan objek tambahanEnumerator
dan setiap akses memerlukan lebih banyak operasi, mengurangkan prestasi.ArrayList
这样的可使用下标进行随机访问的数据结构,使用下标访问,要比foreach
的方式进行顺序访问,速度要快一些。foreach
这样写法,使用的过程产生一个额外的对象Enumerator
,而且每次访问需要更多的操作,降低性能。foreach
是通过GetEnumerator
获得一个IEnumerator
对象,通过IEnumerator
对象执行MoveNext()
方法和获取Current
属性进行遍历的。由于
Enumerator
中,做了版本检查处理
的工作,所以使用foreach
是线程安全
所以
for
的效率通常来说是高于foreach
的,但话也不能说是绝对。那么如何选择呢?我的建议是,在一些全局的,多线程可以访问的数据结构对象,使用
foreach
。而对本地变量,则使用for
foreach
memperoleh objekIEnumerator
melaluiGetEnumerator
dan melaksanakanMoveNext()
melaluiIEnumerator code> object code> dan dapatkan atribut
Current
untuk traversal.Memandangkan
Jadi kecekapanEnumerator
melakukan kerjaversion checking
, menggunakanforeach
adalahthread safe
for
biasanya lebih tinggi daripadaforeach
, tetapi ia tidak boleh dikatakan mutlak. 🎜 🎜Jadi bagaimana untuk memilih? Cadangan saya ialah menggunakanforeach
untuk beberapa objek struktur data global yang boleh diakses oleh berbilang benang. Untuk pembolehubah setempat, gunakanfor
, yang mengambil kira kecekapan dan keselamatan! 🎜 🎜 🎜Kemas kini: Saya baru sahaja menyemak maklumat dan mendapati bahawa untuk tatasusunan melebihi 10W, foreach adalah lebih cekap, tetapi untuk tatasusunan 1W, kerana masih lebih cekap. 🎜http://blog.csdn.net/w2cschoo...🎜foreach
Terutama dalam php7, selepas mengubah suai struktur data tatasusunan, foreach lebih pantas
Lebih baik menggunakan foreach untuk merentasi tatasusunan Lagipun, tidak perlu mengira tatasusunan terlebih dahulu.