Rumah >pembangunan bahagian belakang >tutorial php >Kaedah Transformasi Tatasusunan PHP yang manakah Terpantas: foreach, array_map dengan Lambda, atau array_map dengan Fungsi Statik?
Perbandingan Prestasi Foreach, Array_Map dengan Lambda dan Array_Map dengan Fungsi Statik
Artikel ini menilai perbezaan prestasi antara tiga pendekatan untuk mengubah array: menggunakan foreach, menggunakan array_map dengan fungsi lambda/closure, dan menggunakan array_map dengan fungsi/kaedah 'statik'.
foreach
$result = array(); foreach ($numbers as $number) { $result[] = $number * 10; } return $result;
Peta dengan lambda
return array_map(function($number) { return $number * 10; }, $numbers);
Peta dengan fungsi 'statik', diluluskan sebagai rentetan rujukan
function tenTimes($number) { return $number * 10; } return array_map('tenTimes', $numbers);
Tanda Aras Prestasi
Tanda aras yang dijalankan menggunakan versi PHP yang berbeza (5.6, 7 dan HHVM) mendedahkan keputusan berikut:
PHP Version | Foreach | MapClosure | MapNamed | MapClosureI | ForEachI |
---|---|---|---|---|---|
5.6 | 0.57 | 0.59 | 0.69 | 0.73 | 0.60 |
7 | 0.11 | 0.16 | 0.11 | 0.19 | 0.11 |
HHVM | 0.09 | 0.10 | 0.10 | 0.11 | 0.09 |
Secara amnya, foreach dan array_map dengan fungsi lambda mempamerkan prestasi yang serupa. Array_map dengan fungsi statik adalah lebih perlahan. Menggunakan penutupan dengan pernyataan penggunaan memperkenalkan penalti prestasi yang ketara.
Kesimpulan
Pilihan antara pendekatan ini bergantung pada kes penggunaan khusus dan faktor seperti kebolehbacaan kod, kebolehselenggaraan, dan prestasi. Untuk transformasi mudah, foreach dan array_map dengan fungsi lambda menawarkan prestasi yang setanding dan menyediakan sintaks yang ringkas. Untuk transformasi yang lebih kompleks, array_map dengan fungsi statik membolehkan struktur kod yang lebih bersih dan boleh digunakan semula, walaupun dengan potensi pertukaran prestasi.
Atas ialah kandungan terperinci Kaedah Transformasi Tatasusunan PHP yang manakah Terpantas: foreach, array_map dengan Lambda, atau array_map dengan Fungsi Statik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!