Tags:
Node Thumbnail

ข่าวนี้ต้องย้อนกันไกลหน่อยนะครับ เริ่มจากปี 2010 Facebook เปิดตัว HipHop for PHP ตัวแปลภาษา PHP เป็นไบนารีเพื่อเร่งความเร็วของ PHP โดยจะแปลงเป็น C++ ก่อนแล้วค่อยคอมไพล์ปกติอีกครั้ง

HipHop เวอร์ชันแรกมีปัญหาเรื่องความซับซ้อนของโค้ด ช่วงปลายปี 2011 บริษัทเลยออกซอฟต์แวร์เวอร์ชันสองชื่อ HipHop Virtual Machine หรือ HipHop VM (HHVM) โดยใช้เทคนิคด้านการแปลงโค้ดแบบใหม่มาช่วย ซอฟต์แวร์เวอร์ชันสองสามารถทดแทนซอฟต์แวร์เวอร์ชันแรกในบางส่วน แต่ยังไม่สามารถเอาชนะซอฟต์แวร์เวอร์ชันแรกในส่วนของ C++ ในเรื่องประสิทธิภาพได้ (ส่วนนี้เรียกว่า HPHPC)

เวลาผ่านมาอีกสองปี Facebook ออกมาประกาศว่าสามารถพัฒนา HHVM ให้เอาชนะ HPHPC ได้แล้ว (จริงๆ ทำได้ตั้งแต่ปลายปีที่แล้ว) โดยใช้เทคนิคหลายอย่างประกอบกัน เช่น เขียนตัวแปลงโค้ดระดับบนใหม่ชื่อ HHIR ใช้แทนของเดิม

การที่ HHVM สามารถใช้งานแทน HPHPC ได้ทำให้ Facebook สามารถถอด HPHPC ทิ้งได้ทั้งหมดแล้ว และเมื่อสถาปัตยกรรมทางเทคนิคของ Facebook รันอยู่บน virtual machine (ในความหมายของโปรแกรมมิ่ง ไม่ใช่เรื่อง virtualization ของระบบปฏิบัติการ) ทั้งหมดแล้ว ก็จะทำให้ Facebook สามารถเดินหน้าแผนการใช้เซิร์ฟเวอร์เป็น ARM ควบคู่ไปกับ x86 แบบเดิมได้แล้ว และบริษัทก็เตรียมเปิดเผยแผนเรื่อง ARM เพิ่มเติมในเร็วๆ นี้

Facebook แสดงความสนใจเรื่องการใช้เซิร์ฟเวอร์ ARM ผ่านโครงการ Open Compute มาได้สักระยะหนึ่งแล้ว (ข่าวเก่า) โดยทิศทางนี้ก็สอดคล้องกับข่าวลือล่าสุดว่ากูเกิลสนใจออกแบบชิป ARM เอง

ที่มา - HHVM, The Register

Get latest news from Blognone

Comments

By: caznova
AndroidRed HatUbuntuWindows
on 16 December 2013 - 14:12 #665255
caznova's picture

แหล่มมั่ก

By: F16
iPhoneWindows PhoneAndroidIn Love
on 16 December 2013 - 15:59 #665276

HHVM ทำงานเร็วขึ้น ARM ช่วยให้ระบบประหยัดไฟขึ้น
สมองมนุษย์นี่มันสุดยอดจริงๆ

By: paween_a
Android
on 16 December 2013 - 17:19 #665288
paween_a's picture

ทำยังไงให้มันเร็วกว่า C++ ?

By: bow_der_kleine
WriterAndroidUbuntu
on 16 December 2013 - 19:21 #665308 Reply to:665288
bow_der_kleine's picture

ไม่ได้เร็วกว่าโปรแกรมที่เขียนด้วย C++ ตั้งแต่แรกครับ แต่เร็วกว่าโปรแกรมที่แปลงจาก PHP เป็น C++ ซึ่งปกติการเปลี่ยนจาก script เป็น native โดยไม่ optimize อะไรเลยจะเพิ่มประสิทธิภาพได้ไม่มาก หากมีการ optimize บ้างอาจได้ขึ้นไป 2-5 เท่า (ปกติภาษาสคริปต์จะช้ากว่าภาษา native ประมาณ 20-30 เท่า) เพราะวิธีการนี้จะไม่เปลี่ยน Object Model ของภาษาสคริปต์ และที่ภาษาสคริปต์ช้าเพราะต้องตรวจสอบประเภทตัวแปรตอน run time

วิธีการที่ได้ผลมากกว่าคือใช้ Just In Time Compiler (JIT) ที่แปลงโค้ดภาษาสคริปต์เป็น macine code ตอน run time ที่เร็วกว่าก็เพราะ JIT จะเปลี่ยนตัว Object Model ของภาษาสคริปต์เป็นตัวแปรพื้น ๆ สำหรับ machine code เลย ทำให้ในทางทฤษฏีมันอาจทำงานได้เร็วพอ ๆ กับพวก native แต่ในทางปฏิบัติมันยังต่างกันอีกพอสมควร

JIT สำหรับภาษาสคริปต์ที่เร็วที่สุดในตอนนี้คือ LuaJIT กับ V8 (JavaScript) ที่ช้ากว่า C อยู่แค่ประมาณ 1.5-5 เท่าซึ่งดีกว่า HHVM ในตอนนี้มาก

ผมมองว่า HHVM จะทำให้ดีเท่า LuaJIT กับ V8 ยาก เพราะ Object Model ของ PHP ซับซ้อนมาก ต่างจาก Lua และ JavaScript

By: freeriod on 16 December 2013 - 18:11 #665296
freeriod's picture

ตอนนี้ intel เริ่มขาสั่นละ google ก็จะไป facebook ก็จะไป ARM

By: sompu
ContributoriPhoneWindows PhoneAndroid
on 16 December 2013 - 20:32 #665314
sompu's picture

สงคราม compiler กำลังจะมาแล้วในปีหน้า "ช้างชนช้าง!"

By: mr.k on 16 December 2013 - 22:00 #665334

ถ้า HPHPC พัีฒนาต่อก็คงตามไม่ทันนะผมว่า ผมว่าฝั่งแรกนิ่งเนื่องจากโดนหยุดทำให้โดนตามทันมากกว่าครับ

By: Sam_Team
AndroidWindowsIn Love
on 16 December 2013 - 22:15 #665340 Reply to:665334
Sam_Team's picture

HPHPC มันต้องคอมไพ เวลาทดสอบน่าจะยากกว่า เลยไม่อยากเสียเวลาตรงส่วนนี้ไป (เดา)

By: bow_der_kleine
WriterAndroidUbuntu
on 16 December 2013 - 23:18 #665358 Reply to:665334
bow_der_kleine's picture

เนื่องจาก PHP เป็น dynamic type ยังไง HPHPC ก็โดนแซงครับ เพราะ JIT มีข้อมูลประเภทตัวแปรแล้วแปลงเป็น machine code ตอน run time ได้ แต่ HPHPC ทำไม่ได้

หากเป็นพวก static type ก็เป็นอีกเรื่องนะครับ

By: mk
FounderAndroid
on 16 December 2013 - 23:21 #665361 Reply to:665334
mk's picture

ลองอ่านดูต้นฉบับได้ครับ Facebook ไม่ได้ไม่พอใจประสิทธิภาพของ HPHPC ครับ แต่โค้ดมันดูแลยากเลยอยากทิ้ง

By: mr.k on 17 December 2013 - 02:14 #665393 Reply to:665361

อันนี้ไม่ได้แย้งครับและรับรู้อยู่ แต่ในความหมายของผมคือถ้าโปรเจคแรกมีกลุ่มที่มีศักยภาพรับไปทำต่อพัฒนาต่ออาจจะตามกันยากขึ้นครับ

ส่วนที่ดูแลยากผมว่าแนวคิดแบบนี้ก็ประมาณ Native vs Managed นั้นละครับ มีหลายๆอย่างที่ต้องแลก