Tags:
Node Thumbnail

อัพเดต: 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 ที่แจ้งข่าวด้วยครับ

Get latest news from Blognone

Comments

By: Ford AntiTrust
ContributorAndroidBlackberryUbuntu
on 3 February 2010 - 09:58 #154310
Ford AntiTrust's picture

ใน PHP การแปลงภาษาโดยไม่ต้อง interpret บ่อยๆ ก็ทำได้ด้วยการใช้ APC หรือพวก opcode cache แทนซึ่งได้ประสิทธิภาพระดับที่ยอมรับได้ ซึ่งอันนี้อ้างอิงจาก slide ใน Facebook Engineering Tech Talks ซึ่งก็ทำให้เร็วขึ้นได้เยอะมากๆ แต่ถ้าใช้ในแบบใหม่ก็น่าจะเร็วขึ้นได้อีก ต้องรอดูว่าจะใช้เทคนิคอย่างไรซึ่งน่าสนใจมากๆ

By: luckyman
ContributoriPhoneAndroidRed Hat
on 3 February 2010 - 10:01 #154313

ประกาศแล้วนะครับ HipHop for PHP ดูเหมือนจะเป็นคอมไพเลอร์ที่คอมไพล์ PHP ไป C++ ไม่ใช่ JIT

By: mk
FounderAndroid
on 3 February 2010 - 10:27 #154317 Reply to:154313
mk's picture

โอ้ ผมอ่านข่าวเมื่อคืน มาเขียนตอนเช้า ประกาศซะแล้ว

เดี๋ยวอัพเดตในข่าวให้ครับ

By: cloverink
iPhoneAndroidUbuntuWindows
on 3 February 2010 - 10:11 #154314
cloverink's picture

ดีครับ ^ ^
แต่ flash ยังช้าอยู่ดี -0-

By: Slimy
AndroidUbuntu
on 3 February 2010 - 15:03 #154366 Reply to:154314

เอ พวกแอปเกมส์นิมันดึงจากเจ้าของใช่ปะครับ

By: vittee
AndroidRed HatUbuntuWindows
on 3 February 2010 - 10:34 #154320
vittee's picture

น่าสนใจมากๆเลย ปกติใช้แต่ APC

By: wiennat
Writer
on 3 February 2010 - 10:56 #154328

ว่าจะเข้ามาบอกพอดีว่าประกาศแล้ว

ผมเพิ่งอ่านจบที่ Engineering note กลับมาดูที่ Blognone ก็ขึ้นมาพอดี


onedd.net

By: risc on 3 February 2010 - 11:54 #154335

ระดับลึกๆแล้ว C, C++ ก็ยังต้องใช้งานอยู่ดี

By: mr_tawan
ContributoriPhoneAndroidWindows
on 3 February 2010 - 15:44 #154373 Reply to:154335
mr_tawan's picture

ทำ C++ ต่อไป อิอิ


  • 9tawan.net บล็อกส่วนตัวฮับ
By: ZetaSolid
Windows PhoneSymbianUbuntuWindows
on 3 February 2010 - 21:18 #154431 Reply to:154373
ZetaSolid's picture

+10

By: nblue
Android
on 3 February 2010 - 12:24 #154340
nblue's picture

น่าสนใจมากๆ

By: kittipat
ContributorAndroidUbuntu
on 3 February 2010 - 13:13 #154346

เหมือนกับจะบอกเป็นนัยว่าทำยังไง PHP ก็ไม่เร็วขึ้นกว่าปัจจุบันได้ซักเท่าไหร่

By: mednoon on 3 February 2010 - 15:26 #154368 Reply to:154346

ขอให้มันเร็วขึ้นหน่อยเถอะ ของหากินหลักผมเลย

By: khajochi
WriteriPhoneIn Love
on 3 February 2010 - 13:35 #154352
khajochi's picture

ฝรั่งนี่เค้าเจอว่าช้าก็ไปแก้ตัว engine ระดับ core หรือหาวิธีพลิกแพลงระดับ compiler กันเลยนะเนี่ย .. แอบเคยได้ยินบางคนแถวๆ กระทรวงบอกว่า "ถ้ามันช้า คุณก็แค่เพิ่ม server เข้าไปซิ"


แฟนพันธุ์แท้สตีฟจ็อบส์ | MacThai.com

By: mednoon on 3 February 2010 - 15:23 #154367 Reply to:154352

มันเป็นวิธีที่แก้ปัญหาได้เร็วที่สุดแบบกำปั้นทุบดินด้วย
ผู้บริหารไม่ชอบการวิจัยและพัฒนา แต่ชอบสิ่งที่จับต้องได้ และต้องได้เดี๋ยวนี้ ทันที บัดดลลล
อย่างว่าแหละ จะผู้บริหารจะรู้เรื่อง IT เชิงลึกสักเท่าไรเชียวครับ ในเมื่อโปรแกรเมอร์เราเองก็อยู่ในระดับที่ไม่เก่งพอจะไปคุ้ยห้องเครื่องเหมือนฝรั่งเขาด้วย

By: kittipat
ContributorAndroidUbuntu
on 4 February 2010 - 15:26 #154566 Reply to:154367

ผมว่าคนที่ทำได้มีเยอะนะครับ แต่ไม่มีคนจ่ายเงินให้ทำ ก็เลยไม่มีคนทำ

By: Thaina
Windows
on 4 February 2010 - 15:44 #154567 Reply to:154566

+101

By: Base
AndroidUbuntu
on 11 December 2011 - 11:13 #363075 Reply to:154566
Base's picture

ผมว่าปัญหานี้มันเกิดตั้งแต่ระดับโครงสร้างแล้วครับ

ปล. คำว่า "ระดับโครงสร้าง" นี้ไม่ขออธิบายนะครับ

By: lojorider
AndroidUbuntuWindowsIn Love
on 16 December 2013 - 14:47 #665263 Reply to:363075

โครงสร้างงบประมาณ ไรงี้หรือป่าวครับ

By: kittipat
ContributorAndroidUbuntu
on 4 February 2010 - 15:59 #154570 Reply to:154367

อดไม่ได้ขอพูดเรื่องความสามารถโปรแกรมเมอร์ไทยหน่อยแล้วกัน

คนเก่งจริงมีครับ มีเยอะด้วย ผมเจอมาหลายคนแล้ว ... แต่ส่วนมากไม่ได้ทำงาน(เป็นโปรแกรมเมอร์)อยู่ที่ไทย

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

By: EThaiZone
ContributorAndroidUbuntuWindows
on 8 March 2011 - 12:26 #266909 Reply to:154570
EThaiZone's picture

พื้นฐานไม่แน่น เอาไปประยุกต์ไม่เป็น

+10000


มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB

By: mr_tawan
ContributoriPhoneAndroidWindows
on 3 February 2010 - 15:46 #154374 Reply to:154352
mr_tawan's picture

ถ้าเขาจ่ายค่าไฟไหวผมว่าไม่ใช่ปัญหา (ฮา)

แต่ระดับ Facebook น่าจะต้องคำนึงถึง Green Data Center ด้วย การใช้สิ่งที่มีอยู่น่าจะเป็นทางเลือกที่ดีกว่า

อีกอย่าง Server Farm ระดับรองรับผู้ใช้ได้หลักร้อยล้านคนนี่ ... ถ้าจะเพิ่ม Server เข้าไป ... ไม่รู้ต้องใช้งบประมาณอีกเท่าไหร่


  • 9tawan.net บล็อกส่วนตัวฮับ
By: wiennat
Writer
on 3 February 2010 - 17:20 #154385 Reply to:154352

ผมว่าเว็บบ้านเรายังไม่ใหญ่พอให้กลับมาคิดว่าถ้าความเร็วเพิ่มขึ้น 50% แล้วจะช่วยลดต้นทุนได้มหาศาลน่ะครับ ซึ่งการเอาเครื่องโยนเข้าไปเพิ่มอาจจะให้ผลตอบแทนที่คุ้มค่ากว่าก็ได้

นึกถึงว่าการเพิ่มเครื่องเข้าไป 2 เครื่องในระบบที่มีอยู่แล้ว 2 เครื่องทำให้ระบบทำงานได้เร็วขึ้นกว่าเดิมเยอะโดยเสียเงินเท่ากับจ้างคน 5 คนเป็นเวลา 1 เดือน แต่ว่าถ้าเอาเงินไปพัฒนาระบบให้ได้ผลเท่ากันโดยที่ใช้ฮาร์ดแวร์เท่ากันอาจจะทำไม่ได้หรือใช้เงินมากกว่าด้วยซ้ำ

แต่สำหรับ facebook ผลลัพธ์ที่ได้อาจจะคุ้มค่ากว่าเพราะจำนวนเครื่องเค้าเยอะอยูแล้ว เพิ่มอีก 10 - 20 เครื่องอาจจะไม่พอ ไปแก้หลักการทำงานเลยอาจจะได้ผลดีกว่าในระยะยาว


onedd.net

By: kittipat
ContributorAndroidUbuntu
on 4 February 2010 - 15:20 #154561 Reply to:154385

pantip.com ??

By: Thaina
Windows
on 3 February 2010 - 14:15 #154356

ดีใจจนไม่รู้จะพูดยังไง

กระแส Web Server เริ่มไหลกลับมาทาง JIT / Native เสียที

By: jane
AndroidUbuntu
on 3 February 2010 - 16:21 #154379
jane's picture

asp.net/jsp ทำงานอย่างไร?

By: designil on 3 February 2010 - 19:31 #154406

ไม่แปลกใจเลยครับที่เว็บ Facebook รองรับคนได้มากขนาดนั้น จะว่าไปตั้งแต่ใช้มายังไม่เคยเห็น Facebook ล่มเลยครับ แต่ Twitter เห็นบ้างเป็นบางที อย่างเช่นตอนแถลงข่าว iPad นี่ทวีตเรื่องนี้กันพันกว่าคนภายในไม่ถึงนาที

By: b98se
AndroidWindowsIn Love
on 3 February 2010 - 20:32 #154421
b98se's picture

จับแต่งานเล็กๆ เขียนง่ายๆ ได้ส่งงานเร็วๆ ดีกว่า
php จะช้ายังไงไม่สน

By: mednoon on 4 February 2010 - 08:56 #154486

ผมสรรเสริญคนคิดภาษา C,C++ มากครับคุณคิดภาษานี้มาหากินได้เป็น 100 ปีกันเลยทีเดียว

By: heha
Android
on 4 February 2010 - 13:05 #154525

Facebook ไม่ล่ม แต่ก็มีปัญหาเรื่อง API บ่อยๆ อยู่ครับ (มักจะเป็นเรื่อง performance ช้าลง หรือ bug) เป็นปัญหารายอาทิตย์กันเลยทีเดียว แต่ก็ยังดีกว่า twitter ละนะ :P

ปล. PHP vs Ruby?

By: mokin
Contributor
on 4 February 2010 - 20:49 #154605
mokin's picture

เอาบทความมาฝาก เพื่ออ่านข่าวแล้วงงๆ ว่ามันทำอะไรได้บ้าง โครงสร้างเป็นไง
Facebook Hopes to Revolutionize PHP with “Hip Hop”
ขอบคุณที่มา http://net.tutsplus.com