[อัพเดต] HipHop for PHP ตัวแปลภาษา PHP จาก Facebook

by mk
3 February 2010 - 02:38

อัพเดต: Facebook ประกาศข่าวนี้อย่างเป็นทางการแล้ว รายละเอียดอ่านต่อด้านใน

ยังไม่ประกาศอย่างเป็นทางการ แต่มีการยืนยันจากคนที่เห็นของจริงแล้วว่า Facebook ได้พัฒนาตัวแปลภาษา PHP ของตัวเองขึ้นมาใหม่ ซึ่งช่วยให้การทำงานของ Facebook นั้นเร็วขึ้นมาก

PHP เป็นภาษาแบบ interpreter คือแปลภาษาทุกครั้งที่มีคนเรียกสคริปต์ ซึ่งทำให้เสียเวลาประมวลผล การเปลี่ยนมาใช้วิธี compiler ประมวลผลไว้ก่อนหน้าช่วยให้ประหยัดเวลาได้มาก แต่ก็มีข้อเสียว่าถ้าสคริปต์เปลี่ยนแปลงก็ต้องแปลภาษาใหม่อยู่ดี

Facebook ใช้เทคนิค JIT เข้ามาแก้ปัญหานี้ ช่วยให้สามารถรักษาความยืดหยุ่นของภาษาสคริปต์ แต่ได้ความเร็วในระดับเดียวกับภาษาซี นอกจากนี้แหล่งข่าวยังคาดว่า JIT ของ Facebook ใช้เทคนิค LLVM เข้าช่วยด้วย ทำให้ความเร็วเริ่มขึ้นถึง 80%

Facebook ยังไม่เปิดเผยข้อมูลเกี่ยวกับเรื่องนี้ แต่ตามธรรมเนียมของค่าย Facebook เวลาพัฒนาซอฟต์แวร์ใช้เองภายในเสร็จแล้ว มักจะแจกเป็นโอเพนซอร์สด้วย ก่อนหน้านี้กูเกิลเคยทำโครงการลักษณะเดียวกันแต่เป็น Python ซึ่งได้ประสิทธิภาพดีกว่าเดิม 5 เท่า

ที่มา - ReadWriteWeb

อัพเดต

หลังจากข่าวนี้ออกไปไม่ทันไร ทาง Facebook ได้ประกาศข่าวเรื่องนี้อย่างเป็นทางการแล้ว

ชื่อของมันคือ Hiphop for PHP ซึ่ง Facebook บอกว่ามันไม่ใช่ compiler แต่เป็น "source code transformer" การทำงานคือ Hiphop จะแปลงโค้ด PHP เป็น C++ แล้วจากนั้นค่อยแปลง C++ เป็นไบนารีด้วย g++ ซึ่งเป็น C++ compiler ในชุด GCC มาตรฐานของโครงการ GNU

Hiphop ยอมแลกฟีเจอร์ที่ไม่ค่อยมีคนใช้ เช่น eval() ของ PHP กับประสิทธิภาพที่เพิ่มขึ้น ในชุด Hiphop ประกอบด้วยส่วนประกอบ 3 อย่างคือ code transformer, ตัว PHP runtime เวอร์ชันของตัวเอง, และ PHP Extensions เวอร์ชันปรับแต่งอีกหลายตัว

Facebook อธิบายว่าเทคนิคการเร่งความเร็วของ PHP ก่อนหน้านี้คือเลือกเขียน PHP Extension ด้วยภาษา C++ แล้วเชื่อมกับโปรแกรมด้วย PHP ซึ่งได้ผลจริงในแง่ประสิทธิภาพ แต่กลับทำให้งานซับซ้อนและหาบุคคลากรได้ยาก แต่เมื่อ Facebook จำเป็นต้องแก้ปัญหาเรื่องประสิทธิภาพให้รองรับผู้ใช้จำนวนมากขึ้นเรื่อยๆ จึงต้องหาทาง

Facebook เคยใช้วิธีช่วยปรับปรุง Zend Engine แต่ไม่ค่อยได้ผลนัก สุดท้ายเลยใช้วิธีเขียนตัวแปลภาษา PHP ขึ้นมาใหม่ ผลคือ Hiphop นั่นเอง

รายละเอียดทางเทคนิคอื่นๆ อ่านได้จาก Facebook Blog ขอบคุณคุณ luckyman ที่แจ้งข่าวด้วยครับ

Blognone Jobs Premium