Hak cipta bahasa Inggris dari pendahuluan adalah milik Reinhold Weber, dan terjemahan bahasa Mandarin ditulis oleh yangyang (alias davidkoree). Versi bilingual dapat digunakan untuk penyebaran non-komersial, tetapi penulis versi bahasa Inggris, informasi hak cipta, dan penulis terjemahan bahasa Mandarin harus diperhatikan. Tingkat terjemahan terbatas, mohon koreksi saya.
1. Jika suatu metode dapat dibuat statis, deklarasikan metode tersebut secara statis. Kecepatannya bisa ditingkatkan hingga 4 kali lipat.
2.echo lebih cepat dari mencetak.
3. Gunakan beberapa parameter gema (Terjemahan: mengacu pada penggunaan koma, bukan titik) alih-alih penggabungan string.
4. Tentukan jumlah maksimum perulangan sebelum menjalankan perulangan for, dan jangan menghitung nilai maksimum setiap kali perulangan.
5. Batalkan registrasi variabel yang tidak digunakan, terutama array besar, untuk mengosongkan memori.
6. Cobalah untuk menghindari penggunaan __get, __set, __autoload.
7.require_once() mahal.
8. Gunakan jalur lengkap saat menyertakan file, ini akan memakan waktu lebih sedikit untuk menyelesaikan jalur sistem operasi.
9. Jika Anda ingin mengetahui waktu kapan skrip mulai dijalankan (anotasi: server menerima permintaan klien), lebih baik menggunakan $_SERVER['REQUEST_TIME'] daripada time().
10. Fungsi menggantikan ekspresi reguler untuk menyelesaikan fungsi yang sama.
11. Fungsi str_replace lebih cepat dibandingkan fungsi preg_replace, namun fungsi strtr empat kali lebih efisien dibandingkan fungsi str_replace.
12. Jika fungsi pengganti string dapat menerima array atau karakter sebagai parameter, dan panjang parameter tidak terlalu panjang, maka Anda dapat mempertimbangkan untuk menulis potongan kode pengganti tambahan sehingga setiap parameter yang diteruskan adalah karakter, daripada hanya menulis satu baris kode untuk menerima array. Sebagai parameter untuk kueri dan penggantian.
13. Lebih baik menggunakan pernyataan cabang selektif (anotasi terjemahan: switch case) daripada menggunakan beberapa pernyataan if, else if.
14. Menggunakan @ untuk memblokir pesan kesalahan sangat tidak efisien.
15. Buka modul mod_deflate apache.
16. Koneksi database harus ditutup setelah selesai menggunakannya.
17.$row['id'] 7 kali lebih efisien daripada $row[id].
18. Pesan kesalahan itu mahal.
19. Cobalah untuk tidak menggunakan fungsi dalam perulangan for. Misalnya, for ($x=0; $x < count($array); $x) akan memanggil fungsi count() setiap kali perulangan.
20. Menambah variabel lokal dalam metode adalah yang tercepat. Hampir secepat memanggil variabel lokal dalam suatu fungsi.
21. Menambah variabel global 2 kali lebih lambat dibandingkan menambah variabel lokal.
22. Menambah properti objek (misalnya: $this->prop++) 3 kali lebih lambat dibandingkan menambah variabel lokal.
23. Menambah variabel lokal yang belum ditentukan adalah 9 hingga 10 kali lebih lambat dibandingkan menambah variabel lokal yang telah ditentukan sebelumnya.
24. Mendefinisikan variabel lokal tanpa memanggilnya ke dalam fungsi juga akan memperlambat kecepatannya (sama seperti menambah variabel lokal). PHP mungkin akan memeriksa apakah ada variabel global.
25. Pemanggilan metode tampaknya tidak bergantung pada jumlah metode yang ditentukan di kelas, karena saya menambahkan 10 metode (sebelum dan sesudah pengujian metode) dan tidak ada perubahan kinerja.
26. Metode di kelas turunan berjalan lebih cepat dibandingkan metode yang sama yang ditentukan di kelas dasar.
27. Memanggil fungsi kosong dengan satu parameter membutuhkan waktu yang lama untuk menambah variabel lokal 7 hingga 8 kali. Pemanggilan metode serupa memerlukan hampir 15 operasi penambahan variabel lokal.
28. Gunakan tanda kutip tunggal daripada tanda kutip ganda untuk mengapit string, yang akan lebih cepat. Karena PHP akan mencari variabel dalam string yang diapit tanda kutip ganda, maka tanda kutip tunggal tidak. Tentu saja, ini hanya dapat dilakukan jika Anda tidak perlu memasukkan variabel ke dalam string.
29. Saat mengeluarkan beberapa string, gunakan koma sebagai pengganti titik untuk memisahkan string, yang lebih cepat. Catatan: Hanya echo yang bisa melakukan ini. Ini adalah "fungsi" yang dapat menggunakan banyak string sebagai parameter (Anotasi: Manual PHP mengatakan bahwa echo adalah struktur bahasa, bukan fungsi sebenarnya, jadi fungsi tersebut diapit tanda kutip ganda.) .
30.Apache mengurai skrip PHP 2 hingga 10 kali lebih lambat dibandingkan mengurai halaman HTML statis. Cobalah untuk menggunakan lebih banyak halaman HTML statis dan lebih sedikit skrip.
31. Kecuali skrip dapat di-cache, skrip akan dikompilasi ulang setiap kali dipanggil. Memperkenalkan mekanisme caching PHP biasanya dapat meningkatkan kinerja sebesar 25% hingga 100% untuk menghilangkan overhead kompilasi.
32. Usahakan untuk melakukan cache sebanyak mungkin, anda bisa menggunakan memcached. Memcached adalah sistem caching objek memori berkinerja tinggi yang dapat digunakan untuk mempercepat aplikasi web dinamis dan mengurangi beban database. Caching kode OP berguna agar skrip tidak perlu dikompilasi ulang untuk setiap permintaan.
33. Saat mengoperasikan string dan perlu memeriksa apakah panjangnya memenuhi persyaratan tertentu, Anda tentu akan menggunakan fungsi strlen(). Fungsi ini dijalankan cukup cepat karena tidak melakukan penghitungan apa pun dan hanya mengembalikan panjang string yang diketahui yang disimpan dalam struktur zval (struktur data bawaan C yang digunakan untuk menyimpan variabel PHP). Namun, karena strlen() adalah sebuah fungsi, maka akan agak lambat, karena pemanggilan fungsi akan melalui banyak langkah, seperti huruf kecil (Anotasi: merujuk pada nama fungsi huruf kecil, PHP tidak membedakan nama fungsi huruf besar dan huruf kecil ), pencarian hash, Akan dieksekusi bersama dengan fungsi yang dipanggil. Dalam beberapa kasus, Anda dapat menggunakan trik isset() untuk mempercepat eksekusi kode Anda.
(Contoh di bawah)
if (strlen($foo) < 5) { echo “Foo terlalu pendek”$$ }
(Bandingkan dengan tips di bawah ini)
if (!isset($foo{5})) { echo “Foo is too short”$$ }
Memanggil isset() ternyata lebih cepat daripada strlen() karena, tidak seperti yang terakhir, isset() adalah konstruksi bahasa, artinya yang pelaksanaannya tidak memerlukan pencarian fungsi dan huruf kecil. Artinya, Anda sebenarnya tidak menghabiskan banyak biaya tambahan dalam kode tingkat atas untuk memeriksa panjang string.
34. Saat melakukan penambahan atau pengurangan variabel $i, $i++ akan lebih lambat dari ++$i. Perbedaan ini khusus untuk PHP dan tidak berlaku untuk bahasa lain, jadi mohon jangan mengubah kode C atau Java Anda dan mengharapkannya menjadi lebih cepat secara instan, itu tidak akan berhasil. ++$i lebih cepat karena hanya membutuhkan 3 instruksi (opcode), sedangkan $i++ membutuhkan 4 instruksi. Pasca kenaikan sebenarnya menciptakan variabel sementara yang kemudian bertambah. Kenaikan awalan meningkat langsung pada nilai aslinya. Ini yang paling
35. Belum tentu berorientasi objek (OOP). Berorientasi objek seringkali mahal, dan setiap metode dan pemanggilan objek menghabiskan banyak memori.
36. Tidak semua struktur data perlu diimplementasikan di kelas, array juga berguna.
37. Jangan membagi metode terlalu banyak. Pikirkan baik-baik kode mana yang benar-benar ingin Anda gunakan kembali?
38. Anda selalu dapat memecah kode menjadi beberapa metode bila diperlukan.
39. Cobalah untuk menggunakan banyak fungsi bawaan PHP.
40. Jika ada banyak fungsi yang memakan waktu dalam kode Anda, Anda dapat mempertimbangkan untuk mengimplementasikannya sebagai ekstensi C.
41. Profil kode Anda. Pemeriksa akan memberi tahu Anda bagian kode mana yang memerlukan waktu lama. Debugger Xdebug menyertakan rutinitas pemeriksaan yang mengevaluasi keseluruhan integritas kode Anda dan mengungkap hambatan dalam kode Anda.
42.mod_zip dapat digunakan sebagai modul Apache untuk mengompresi data Anda secara instan dan mengurangi volume transmisi data hingga 80%.
43. Jenis proses optimasi, seperti yang dilakukan oleh pengoptimal PHP Zend. Sebaiknya ingat pengoptimalan ini karena tidak semua pengoptimal perintah melakukan pengoptimalan yang sama, dan ada sejumlah besar Penyedia Layanan Internet (ISP) dan server yang tidak menginstal pengoptimal perintah. Artikel bagus lainnya tentang optimasi PHP, ditulis oleh John Lim.