Facebook menciptakan mesin virtual PHP

Raksasa jejaring sosial Facebook telah mengambil langkah lain untuk membuat bahasa pemrograman Web PHP berjalan lebih cepat. Perusahaan telah mengembangkan Mesin Virtual PHP yang dikatakan dapat mengeksekusi bahasa sebanyak sembilan kali lebih cepat dari menjalankan PHP secara native pada sistem besar.

"Tujuan kami adalah membuat PHP berjalan sangat, sangat cepat," kata Joel Pobar, manajer teknik Facebook. Facebook telah menggunakan mesin virtual, yang disebut HHVM (HipHop Virtual Machine), di semua servernya sejak awal tahun ini.

[Pelajari cara bekerja lebih cerdas, bukan lebih keras dengan ringkasan semua tip dan tren yang perlu diketahui pemrogram dalam Panduan Bertahan Hidup Pengembang. Unduh PDF hari ini! | Ikuti terus berita pengembang terbaru dengan buletin Dunia Pengembang. ]

Pobar membahas mesin virtual di OSCON (O'Reilly Open Source Conference) yang diadakan minggu ini di Portland, Oregon.

HHVM bukanlah upaya pertama Facebook untuk menyesuaikan PHP agar dapat digunakan lebih cepat. PHP adalah bahasa interpretasi, artinya kode sumber dijalankan oleh prosesor secara langsung. Secara umum, program yang ditulis dalam bahasa interpretasi seperti PHP cenderung tidak berjalan secepat bahasa, seperti C atau C ++, yang telah dikompilasi sebelumnya ke dalam kode byte bahasa mesin. Facebook tetap setia pada PHP karena dipahami secara luas oleh banyak pemrogram Web yang bekerja untuk perusahaan tersebut.

Untuk memenuhi permintaan pengguna yang tidak pernah terpuaskan, Facebook awalnya merancang kompiler, yang disebut HipHop, yang akan menerjemahkan kode PHP ke dalam C ++, sehingga dapat dikompilasi sebelumnya untuk kinerja yang lebih cepat.

Meskipun Facebook menikmati peningkatan performa yang cukup besar dari HipHop versi pertama ini selama beberapa tahun, Facebook mencari cara lain untuk mempercepat pengiriman halaman Web yang dibuat secara dinamis kepada miliaran penggunanya. “Strategi kinerja kami untuk itu akan disingkirkan,” Pobar mengakui.

HHVM adalah langkah selanjutnya untuk Facebook. Dalam pengembangan selama sekitar tiga tahun, HHVM sebenarnya bekerja dengan prinsip yang sama dengan JVM (Java Virtual Machine). HHVM memiliki kompiler JIT (just-in-time) yang mengubah kode sumber yang dapat dibaca manusia menjadi kode byte yang dapat dibaca mesin saat diperlukan. (HipHop sebelumnya, berganti nama menjadi HPHPc, sekarang telah dihentikan di dalam Facebook.)

Pendekatan JIT ini memungkinkan mesin virtual untuk "membuat keputusan yang lebih cerdas saat runtime," kata Pobar. Misalnya, jika panggilan dilakukan ke database MySQL untuk membaca baris data, HHVM dapat, dengan cepat, mengetahui jenis datanya, seperti integer atau string. Kemudian dapat menghasilkan atau memanggil kode dengan cepat yang paling cocok untuk menangani jenis data khusus ini.

Dengan HipHop lama, "hal terbaik yang dapat dilakukannya adalah menganalisis seluruh basis kode Facebook, alasan tentangnya, dan kemudian mengkhususkan kode berdasarkan alasannya. Tetapi itu tidak bisa mendapatkan semua alasan dengan benar. Ada bagian dari basis kode yang Anda tidak bisa begitu saja menyimpulkan tentang atau bernalar, "kata Pobar.

Pobar memperkirakan HHVM sekitar dua kali lebih cepat dari HPHPc, dan sekitar sembilan kali lebih cepat dari menjalankan langsung PHP.

Facebook telah memposting kode untuk HHVM di GitHub, dengan harapan orang lain akan menggunakannya untuk mempercepat situs web PHP mereka juga.

HHVM dioptimalkan untuk menangani basis kode PHP yang sangat besar dan banyak digunakan. Pobar memperhitungkan bahwa menggunakan HHVM untuk situs web berukuran standar, seperti satu hosting blog Wordpress, hanya akan memperoleh peningkatan kinerja sekitar lima kali lipat.

"Jika Anda mengambil beberapa PHP dan menjalankannya di HipHop, waktu eksekusi CPU [mungkin] bukan faktor pembatas untuk kinerja. Kemungkinan [sistem] menghabiskan terlalu banyak waktu untuk berbicara dengan database atau menghabiskan terlalu banyak waktu untuk berbicara [ yang] memcache "lapisan cache, kata Pobar.

Joab Jackson meliput perangkat lunak perusahaan dan berita teknologi umum untuk The News Service . Ikuti Joab di Twitter di @Joab_Jackson. Alamat email Joab adalah [email protected]