Bagaimanakah 'foreach' Berbanding 'array_map' dengan Lambda atau Fungsi 'statik'?
Apabila mengubah tatasusunan, pembangun sering memikirkan implikasi prestasi penggunaan 'foreach ', 'array_map' dengan fungsi lambda (closure), atau 'array_map' dengan 'statik' fungsi/kaedah.
Penilaian Prestasi
Tanda aras (dengan xdebug dilumpuhkan) mendedahkan bahawa:
-
PHP 5.6: Perbezaan minimum antara 'foreach ' dan 'array_map' penutupan.
-
PHP 7 dan kemudian: penutupan 'foreach' dan 'array_map' kekal setanding.
Kesan Penutupan Menggunakan 'use'
Memasukkan penutupan dengan pernyataan 'penggunaan' dengan ketara mempengaruhi prestasi dalam versi 'array_map', tetapi tidak dalam versi 'foreach'.
Pendekatan Lain
Manakala 'foreach', 'array_map' dengan lambda dan 'array_map' dengan fungsi 'statik' ialah pendekatan yang paling biasa, yang lain pilihan wujud:
-
Ungkapan Penjana: Serupa dengan 'foreach' tetapi ringkas (jika disokong oleh versi PHP anda).
-
'uopz_iterator_apply()': Cepat tetapi ditamatkan pada PHP 8.0.
Memilih Antara Pendekatan
Pilihan optimum bergantung kepada faktor termasuk:
-
Pemudahan: 'foreach' lebih mudah dibaca dan ditulis.
-
Prestasi: Untuk transformasi mudah tanpa gelung atau penutupan, 'foreach' atau 'array_map' dengan fungsi 'statik' ialah lebih pantas.
-
Prestasi Penutupan: Jika penutupan diperlukan, pertimbangkan untuk menggunakan 'uopz_iterator_apply()' untuk prestasi terbaik dalam PHP 7.x atau 'foreach' jika 'uopz_iterator_apply()' tidak tersedia.
-
Pemprofil Kod: Gunakan pemprofil untuk menentukan kesesakan prestasi dan pilih teknik yang paling sesuai.
Atas ialah kandungan terperinci `foreach`, `array_map` dengan Lambda, atau Fungsi Statik: Manakah Terpantas untuk Transformasi Tatasusunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!