Saya tahu Anda bisa mengecilkan PHP, tapi saya bertanya-tanya apakah ada gunanya. PHP adalah bahasa yang ditafsirkan sehingga akan berjalan sedikit lebih lambat daripada bahasa yang dikompilasi. Pertanyaan saya adalah: akankah klien melihat peningkatan kecepatan yang terlihat dalam pemuatan halaman dan semacamnya jika saya mengecilkan PHP saya?
Juga, apakah ada cara untuk mengkompilasi PHP atau yang serupa?
Jawaban:
PHP dikompilasi menjadi bytecode, yang kemudian diinterpretasikan di atas sesuatu yang menyerupai VM. Banyak bahasa skrip lainnya mengikuti proses umum yang sama, termasuk Perl dan Ruby. Ini bukan bahasa interpretasi tradisional seperti, katakanlah, BASIC.
Tidak akan ada peningkatan kecepatan yang efektif jika Anda mencoba "memperkecil" sumbernya. Anda akan mendapatkan peningkatan besar dengan menggunakan cache bytecode seperti APC .
Facebook memperkenalkan kompiler bernama HipHop yang mengubah sumber PHP menjadi kode C ++. Rasmus Lerdorf, salah satu orang PHP besar melakukan presentasi untuk Digg awal tahun ini yang membahas peningkatan kinerja yang diberikan oleh HipHop. Singkatnya, ini tidak terlalu cepat daripada mengoptimalkan kode dan menggunakan cache bytecode. HipHop berlebihan untuk sebagian besar pengguna.
Facebook juga baru-baru ini meluncurkan HHVM , mesin virtual baru berdasarkan pekerjaan mereka membuat HipHop. Ini masih agak baru dan tidak jelas apakah itu akan memberikan peningkatan kinerja yang besar kepada masyarakat umum.
Hanya untuk memastikannya dinyatakan dengan jelas, silahkan baca presentasi itu secara lengkap. Ini menunjukkan banyak cara untuk benchmark dan profil kode dan mengidentifikasi hambatan menggunakan alat-alat seperti Xdebug dan xhprof , juga dari Facebook.
sumber
Lupakan gagasan untuk mengecilkan PHP demi penggunaan cache opcode, seperti
PHP Accelerator
, atauAPC
.Atau sesuatu seperti itu
memcached
sumber
Dengan beberapa penulisan ulang (nama variabel yang lebih pendek) Anda dapat menghemat beberapa byte memori, tetapi itu juga jarang signifikan.
Namun saya mendesain beberapa aplikasi saya dengan cara yang memungkinkan untuk menggabungkan skrip termasuk bersama-sama. Dengan
php -w
itu dapat dipadatkan secara signifikan, menambahkan sedikit peningkatan kecepatan untuk startup skrip. Pada server yang mendukung opcode, ini hanya menyimpan beberapa pemeriksaan mtime file.sumber
Ini bukan jawaban daripada iklan. Saya sedang mengerjakan ekstensi PHP yang menerjemahkan opcode Zend untuk dijalankan pada VM dengan pengetikan statis. Itu tidak mempercepat kode PHP sewenang-wenang. Itu memungkinkan Anda untuk menulis kode yang berjalan lebih cepat dari yang diizinkan PHP biasa. Kuncinya di sini adalah pengetikan statis. Pada CPU modern, bahasa dinamis memakan penalti kesalahan prediksi cabang kiri dan kanan. Fakta bahwa array PHP adalah tabel hash juga membebankan biaya tinggi: banyak kesalahan prediksi cabang, penggunaan cache yang tidak efisien, prefetching memori yang buruk, dan tidak ada optimasi SIMD sama sekali. Kesalahan prediksi cabang dan cache miss khususnya adalah kelemahan utama bagi prosesor masa kini. VM kecil saya menghindari masalah itu dengan menggunakan tipe statis dan array C, bukan tabel hash. Hasilnya akhirnya berjalan kira-kira sepuluh kali lebih cepat. Ini menggunakan interpretasi bytecode. Ekstensi opsional dapat mengkompilasi fungsi melalui gcc. Dalam hal ini, Anda mendapatkan kecepatan dua hingga lima kali lebih cepat.
Berikut tautan untuk siapa pun yang tertarik:
https://github.com/chung-leong/qb/wiki
Sekali lagi, ekstensi ini bukan akselerator PHP umum. Anda harus menulis kode khusus untuk itu.
sumber
Ya, ada satu poin (non-teknis).
Penghosting Anda dapat memata-matai kode Anda di servernya. Jika Anda memperkecil dan memperburuknya, maka mata-mata akan lebih sulit mencuri ide Anda.
Salah satu alasan untuk memperkecil dan memperburuk php mungkin karena perlindungan mata-mata. Saya pikir kode uglyfing harus selangkah dalam penerapan otomatis.
sumber
Ada kompiler PHP ... lihat pertanyaan sebelumnya ini untuk daftarnya; tetapi (kecuali Anda seukuran Facebook atau menargetkan aplikasi Anda untuk menjalankan sisi klien) biasanya masalah itu jauh lebih banyak daripada nilainya.
Caching opcode sederhana akan memberi Anda lebih banyak manfaat untuk usaha yang terlibat. Atau buat profil kode Anda untuk mengidentifikasi kemacetan, lalu optimalkan.
sumber
Anda tidak perlu mengecilkan PHP. Untuk mendapatkan kinerja yang lebih baik, instal cache Opcode; tetapi solusi yang ideal adalah meningkatkan PHP Anda ke versi 5.5 atau lebih tinggi karena versi yang lebih baru memiliki cache opcode secara default yang disebut Zend Optimiser yang berkinerja lebih baik daripada yang lain http://massivescale.blogspot.com/2013/06 /php-55-zend-optimiser-opcache-vs-xcache.html .
sumber