Facebook rilis hiphop, yang dioptimalkan versi PHP, melalui open source







Salah satu nilai utama di Facebook untuk bergerak cepat. Selama enam tahun terakhir, Kita Telah Mampu untuk menyelesaikan banyak berkat perkembangan pesat perdamaian itu PHP menawarkan. Sebagai bahasa pemrograman, PHP sederhana. Sederhana untuk belajar, mudah untuk menulis, mudah dibaca, dan sederhana untuk debug. Kita Mampu untuk mendapatkan insinyur baru di Facebook menggenjot produksinya jauh lebih cepat dengan Than PHP dengan bahasa lain, yang memungkinkan kita untuk berinovasi lebih cepat.









Hari ini aku bersemangat untuk berbagi proyek sebuah tim kecil orang-orang hebat dan saya Telah bekerja selama dua tahun terakhir; Hiphop untuk PHP. Dengan Hiphop kami telah Mengurangi penggunaan CPU di server kami Web rata-rata sekitar lima puluh persen, Tergantung pada halaman. Kurang CPU SARANA Kurang server, yang SARANA overhead kurang. Proyek ini telah Punya Dampak Besar di Facebook. Kami merasakan Web pada umumnya bisa mendapatkan keuntungan dari Hiphop, aku tahu kami merilisnya sebagai open source malam ini di Hope yang Membawa Baru Fokus Menuju website skala besar yang kompleks dengan PHP. Sementara Hip Hop telah menunjukan Hasil yang luar biasa, Tentu saja tidak lengkap dan Anda Harus nyaman dengan perangkat lunak beta sebelum Mencoba keluar.







Hiphop Bukankah teknis compiler untuk PHP itu sendiri. Justru itu adalah sebuah transformator source code. Hiphop pemrograman PHP Anda mengubah kode sumber menjadi sangat optimal C + + dan kemudian menggunakan g + + untuk compile. Hiphop mengeksekusi kode sumber ke redaksi setara dengan manner dan Jarang digunakan Kurban Beberapa fitur - Seperti eval () - sebagai imbalan untuk Peningkatan Kinerja. kode Hiphop termasuk transformator, sebuah reimplementation sistem runtime PHP, dan menulis ulang banyak Extensions PHP umum untuk Mengambil Keuntungan dari ini Optimasi Kinerja.







Hiphop Bukankah teknis compiler untuk PHP itu sendiri. Justru itu adalah sebuah transformator source code. Hiphop pemrograman PHP Anda mengubah kode sumber menjadi sangat optimal C + + dan kemudian menggunakan g + + untuk compile. Hiphop mengeksekusi kode sumber ke redaksi setara dengan manner dan Jarang digunakan Kurban Beberapa fitur - Seperti eval () - sebagai imbalan untuk Peningkatan Kinerja. kode Hiphop termasuk transformator, sebuah reimplementation sistem runtime PHP, dan menulis ulang banyak Extensions PHP umum untuk Mengambil Keuntungan dari ini Optimasi Kinerja.







Scaling PHP sebagai Bahasa Scripting















akar PHP adalah Mereka dari bahasa scripting, seperti Perl, Python, dan Ruby, semua yang Memiliki manfaat utama dalam hal produktivitas programmer dan Kemampuan untuk CEPAT produk iterasi. Dibandingkan dengan ini lebih tradisional bahasa dikompilasi seperti C + + dan diinterpretasikan seperti bahasa Jawa. Di sisi lain, bahasa script yang dikenal sebagai umumnya kurang efisien Ketika datang ke CPU dan penggunaan memori. Karena itu, sudah menantang untuk skala ke lebih dari 400 miliar Facebook berbasis PHP-Setiap tampilan halaman per bulan.















Salah satu cara umum untuk mengatasi inefisiensi ini adalah untuk menulis ulang bagian-bagian yang lebih kompleks dari aplikasi PHP Anda langsung di C + + sebagai ekstensi PHP. Hal ini sebagian besar berubah menjadi bahasa front-end lem PHP Antara HTML Anda dan logika aplikasi di C + +. Dari perspektif teknis ini bekerja dengan baik, Tapi Mengurangi secara drastis jumlah insinyur yang Dapat Bekerja pada Seluruh aplikasi Anda. Belajar C + + hanyalah langkah pertama untuk menulis ekstensi PHP, yang kedua adalah pemahaman Zend API. Karena itu tim insinyur kami adalah relatif kecil - ada lebih dari satu juta pengguna untuk insinyur Setiap - kami tidak dapat MAMPU untuk membuat bagian-bagian dari basis kode Than kami kurang dapat diakses orang lain.





















Karena Facebook scaling Khususnya menantang Hampir Setiap tampilan halaman adalah log-in pengguna dengan pengalaman disesuaikan. Ketika Anda melihat rumah Anda, kami perlu mencari semua teman Anda, permintaan mereka update paling relevan (dari layanan kustom kami telah membangun Dipanggil multifeed), menyaring hasil berdasarkan pengaturan privasi Anda, kemudian mengisi cerita dengan komentar , foto, suka, dan sampai saat ini Bahwa orang-orang kaya cinta tentang Facebook. Semua ini hanya di bawah satu detik. Hiphop memungkinkan kita untuk menulis logika Itu majelis halaman terakhir dalam PHP dan iterates itu CEPAT sementara Bergantung pada layanan back-end kustom di C + +, Erlang, Java, atau Python untuk layanan News Feed, pencarian, instant messaging, dan bagian inti lainnya dari situs.















Sejak 2007, kami sudah memikirkan berbagai cara untuk Memecahkan Masalah-masalah ini bahkan mencoba Pelaksana Have A Beberapa dari mereka. Saran yang umum adalah untuk hanya menulis ulang Facebook Dalam Bahasa lain, Namun Mengingat kompleksitas dan kecepatan pengembangan situs ini Apakah Ambil Beberapa Waktu untuk menyelesaikan. Kami sudah menulis ulang Aspek dari Zend Engine - internal PHP - dan menyumbang patch tersebut kembali ke dalam proyek PHP, Tapi Akhirnya Tidak melihat jenis Meningkatkan kinerja itu diperlukan. Hampir manfaat Hiphop adalah transparan untuk pengembangan kecepatan kami.







Hacking Up Hiphop







Suatu malam di tahun Hackathon J Sedikit lalu (lihat Prime Time Hack), saya mulai potongan pertama saya mengubah kode PHP ke dalam C + +. Agak mirip sintaktis bahasa yaitu C + + dan PHP drastis performanya melebihi Ketika Penyalahgunaan Comes untuk Kedua CPU dan penggunaan memori. Bahkan Hakikat PHP ditulis dalam C. Kami tahu bahwa itu adalah mustahil untuk berhasil menulis ulang sebuah basis kode Seluruh ukuran ini dengan tangan, Tapi Apa yang Akan Terjadi bertanya-tanya apakah kita membangun sistem untuk melakukannya pemrograman.







Mencari Cara Baru untuk Meningkatkan Kinerja PHP bukanlah konsep baru. Pada saat menjalankan Zend Engine ternyata Anda sumber PHP ke opkode Yang kemudian jalankan melalui Virtual Machine Zend. proyek-proyek Open source Seperti eAccelerator APC dan cache output ini dan digunakan oleh Mayoritas powered PHP website. Ada juga Zend Server, Membuat produk komersial yang lebih cepat melalui opcode caching PHP dan optimasi. Sebaliknya, kita di mana berpikir tentang mengubah sumber PHP langsung ke C + + yang kemudian dapat Membalik ke dalam kode mesin asli. Bahkan kompilasi PHP bukanlah ide baru, Proyek-proyek open source seperti Puskesmas Roadsend dan kompilasi PHP ke C, Quercus mengkompilasi PHP ke Jawa, dan Phalanger PHP untuk mengkompilasi. Bersih







Bagaimana Bekerja Hiphop









Tantangan utama dari proyek ini WS Menjembatani Gap Antara PHP dan C + +. PHP adalah bahasa scripting dengan dinamis, mengetik lemah. C + + adalah bahasa yang dikompilasi dengan mengetik statis. Sementara PHP memungkinkan Anda untuk menulis fitur dinamis magis, paling PHP adalah relatif mudah. Ini Lebih Kemungkinan Bahwa kau melihat apakah (...) {...} lain (..) Than melihatnya adalah fungsi foo ($ x) (termasuk $ x;). Ini Di mana Kami mendapatkan kinerja. Bila mungkin kami menggunakan kode yang dihasilkan mengikat statis untuk fungsi dan variabel. Juga kita menggunakan inferensi tipe untuk memilih Jenis yang paling spesifik mungkin untuk Jadi kami variabel dan menyimpan memori.











1. Analisis statis mana Kami mengumpulkan informasi tentang siapa dan apa Umumkan dependensi,



2. Jenis inferensi Dimana Kami memilih Jenis yang paling spesifik Antara C + + skalar, string, array, kelas, Obyek dan Varian, DAN



3. Yang generasi kode untuk Bagian Paling Apakah korespondensi langsung dari laporan PHP dan ekspresi ke C + laporan + dan ekspresi.













Kami memiliki Dikembangkan HPHPi Juga, Apakah yang Seorang juru eksperimental dirancang untuk pembangunan. Bila menggunakan HPHPi Anda tidak perlu mengkompilasi kode sumber Anda PHP sebelum menjalankannya. Ini membantu kami menangkap bug di Hiphop Menyediakan insinyur Hakikat dan cara untuk menggunakan tanpa mengubah cara Hiphop Mereka menulis PHP.



Secara keseluruhan Hiphop memungkinkan kita untuk menjaga Aspek terbaik dari PHP sementara Mengambil keuntungan dari kinerja manfaat C + +. Secara total, Kami telah menulis lebih dari 300.000 baris kode dan tes Lebih dari 5,000 unit. Semua ini akan dirilis malam ini di GitHub bawah lisensi open source PHP.



Selengkapnya Malam ini



Malam ini kita hosting sekelompok kecil pengembang untuk Dive Into Deeper Hiphop untuk PHP dan bicara teknologi ini akan dialirkan hidup. Periksa kembali di sini sekitar 7:30 Pasifik jika Anda ingin menonton.



Seperti yang saya yakin akan ada banyak pertanyaan, mulai malam ini kita lihat wiki pengembang Hiphop Hiphop atau bergabung dengan mailing list. Juga Anda akan menemukan kami di FOSDEM, SKALA, PHP Inggris ConFoo Tek X, dan OSCON Selama Beberapa minggu Next berbicara tentang Hiphop untuk PHP. Kami sangat bersemangat untuk Hiphop berevolusi menjadi proyek Open Source berkembang bersama dengan kalian semua.







Haiping Zhao, a senior engineer, has found Facebook to be a programmer's paradise.



 
Copyright © Astaga Lifestyle