อัพเดต: 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 ที่แจ้งข่าวด้วยครับ
Comments
ใน PHP การแปลงภาษาโดยไม่ต้อง interpret บ่อยๆ ก็ทำได้ด้วยการใช้ APC หรือพวก opcode cache แทนซึ่งได้ประสิทธิภาพระดับที่ยอมรับได้ ซึ่งอันนี้อ้างอิงจาก slide ใน Facebook Engineering Tech Talks ซึ่งก็ทำให้เร็วขึ้นได้เยอะมากๆ แต่ถ้าใช้ในแบบใหม่ก็น่าจะเร็วขึ้นได้อีก ต้องรอดูว่าจะใช้เทคนิคอย่างไรซึ่งน่าสนใจมากๆ
ประกาศแล้วนะครับ HipHop for PHP ดูเหมือนจะเป็นคอมไพเลอร์ที่คอมไพล์ PHP ไป C++ ไม่ใช่ JIT
โอ้ ผมอ่านข่าวเมื่อคืน มาเขียนตอนเช้า ประกาศซะแล้ว
เดี๋ยวอัพเดตในข่าวให้ครับ
ดีครับ ^ ^
แต่ flash ยังช้าอยู่ดี -0-
เอ พวกแอปเกมส์นิมันดึงจากเจ้าของใช่ปะครับ
น่าสนใจมากๆเลย ปกติใช้แต่ APC
ว่าจะเข้ามาบอกพอดีว่าประกาศแล้ว
ผมเพิ่งอ่านจบที่ Engineering note กลับมาดูที่ Blognone ก็ขึ้นมาพอดี
onedd.net
ระดับลึกๆแล้ว C, C++ ก็ยังต้องใช้งานอยู่ดี
ทำ C++ ต่อไป อิอิ
+10
น่าสนใจมากๆ
เหมือนกับจะบอกเป็นนัยว่าทำยังไง PHP ก็ไม่เร็วขึ้นกว่าปัจจุบันได้ซักเท่าไหร่
ขอให้มันเร็วขึ้นหน่อยเถอะ ของหากินหลักผมเลย
ฝรั่งนี่เค้าเจอว่าช้าก็ไปแก้ตัว engine ระดับ core หรือหาวิธีพลิกแพลงระดับ compiler กันเลยนะเนี่ย .. แอบเคยได้ยินบางคนแถวๆ กระทรวงบอกว่า "ถ้ามันช้า คุณก็แค่เพิ่ม server เข้าไปซิ"
แฟนพันธุ์แท้สตีฟจ็อบส์ | MacThai.com
มันเป็นวิธีที่แก้ปัญหาได้เร็วที่สุดแบบกำปั้นทุบดินด้วย
ผู้บริหารไม่ชอบการวิจัยและพัฒนา แต่ชอบสิ่งที่จับต้องได้ และต้องได้เดี๋ยวนี้ ทันที บัดดลลล
อย่างว่าแหละ จะผู้บริหารจะรู้เรื่อง IT เชิงลึกสักเท่าไรเชียวครับ ในเมื่อโปรแกรเมอร์เราเองก็อยู่ในระดับที่ไม่เก่งพอจะไปคุ้ยห้องเครื่องเหมือนฝรั่งเขาด้วย
ผมว่าคนที่ทำได้มีเยอะนะครับ แต่ไม่มีคนจ่ายเงินให้ทำ ก็เลยไม่มีคนทำ
+101
ผมว่าปัญหานี้มันเกิดตั้งแต่ระดับโครงสร้างแล้วครับ
ปล. คำว่า "ระดับโครงสร้าง" นี้ไม่ขออธิบายนะครับ
โครงสร้างงบประมาณ ไรงี้หรือป่าวครับ
อดไม่ได้ขอพูดเรื่องความสามารถโปรแกรมเมอร์ไทยหน่อยแล้วกัน
คนเก่งจริงมีครับ มีเยอะด้วย ผมเจอมาหลายคนแล้ว ... แต่ส่วนมากไม่ได้ทำงาน(เป็นโปรแกรมเมอร์)อยู่ที่ไทย
และจากที่เคยพบเคยเจอมา จะเก่งไม่เก่งก็ขึ้นอยู่กับพื้นฐานอย่างเดียว ถ้าพื้นฐานแน่น ทำอะไรก็ดีหมดครับ เคยได้ยินคำพูดว่าเรียนไปไม่ได้ใช้บ่อยๆ ผมว่ามันจริงแค่ครึ่งเดียว คือบางทีงานมันก็ง่ายเกินจริงๆ แต่ถ้าเจอประเภทที่ทำงานแล้วติด ทำไม่ได้ ทำได้แต่ช้า พวกนี้เกิดจากพื้นฐานไม่แน่น เอาไปประยุกต์ไม่เป็นทั้งนั้นครับ
พื้นฐานไม่แน่น เอาไปประยุกต์ไม่เป็น
+10000
มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB
ถ้าเขาจ่ายค่าไฟไหวผมว่าไม่ใช่ปัญหา (ฮา)
แต่ระดับ Facebook น่าจะต้องคำนึงถึง Green Data Center ด้วย การใช้สิ่งที่มีอยู่น่าจะเป็นทางเลือกที่ดีกว่า
อีกอย่าง Server Farm ระดับรองรับผู้ใช้ได้หลักร้อยล้านคนนี่ ... ถ้าจะเพิ่ม Server เข้าไป ... ไม่รู้ต้องใช้งบประมาณอีกเท่าไหร่
ผมว่าเว็บบ้านเรายังไม่ใหญ่พอให้กลับมาคิดว่าถ้าความเร็วเพิ่มขึ้น 50% แล้วจะช่วยลดต้นทุนได้มหาศาลน่ะครับ ซึ่งการเอาเครื่องโยนเข้าไปเพิ่มอาจจะให้ผลตอบแทนที่คุ้มค่ากว่าก็ได้
นึกถึงว่าการเพิ่มเครื่องเข้าไป 2 เครื่องในระบบที่มีอยู่แล้ว 2 เครื่องทำให้ระบบทำงานได้เร็วขึ้นกว่าเดิมเยอะโดยเสียเงินเท่ากับจ้างคน 5 คนเป็นเวลา 1 เดือน แต่ว่าถ้าเอาเงินไปพัฒนาระบบให้ได้ผลเท่ากันโดยที่ใช้ฮาร์ดแวร์เท่ากันอาจจะทำไม่ได้หรือใช้เงินมากกว่าด้วยซ้ำ
แต่สำหรับ facebook ผลลัพธ์ที่ได้อาจจะคุ้มค่ากว่าเพราะจำนวนเครื่องเค้าเยอะอยูแล้ว เพิ่มอีก 10 - 20 เครื่องอาจจะไม่พอ ไปแก้หลักการทำงานเลยอาจจะได้ผลดีกว่าในระยะยาว
onedd.net
pantip.com ??
ดีใจจนไม่รู้จะพูดยังไง
กระแส Web Server เริ่มไหลกลับมาทาง JIT / Native เสียที
asp.net/jsp ทำงานอย่างไร?
ไม่แปลกใจเลยครับที่เว็บ Facebook รองรับคนได้มากขนาดนั้น จะว่าไปตั้งแต่ใช้มายังไม่เคยเห็น Facebook ล่มเลยครับ แต่ Twitter เห็นบ้างเป็นบางที อย่างเช่นตอนแถลงข่าว iPad นี่ทวีตเรื่องนี้กันพันกว่าคนภายในไม่ถึงนาที
จับแต่งานเล็กๆ เขียนง่ายๆ ได้ส่งงานเร็วๆ ดีกว่า
php จะช้ายังไงไม่สน
ผมสรรเสริญคนคิดภาษา C,C++ มากครับคุณคิดภาษานี้มาหากินได้เป็น 100 ปีกันเลยทีเดียว
Facebook ไม่ล่ม แต่ก็มีปัญหาเรื่อง API บ่อยๆ อยู่ครับ (มักจะเป็นเรื่อง performance ช้าลง หรือ bug) เป็นปัญหารายอาทิตย์กันเลยทีเดียว แต่ก็ยังดีกว่า twitter ละนะ :P
ปล. PHP vs Ruby?
เอาบทความมาฝาก เพื่ออ่านข่าวแล้วงงๆ ว่ามันทำอะไรได้บ้าง โครงสร้างเป็นไง
Facebook Hopes to Revolutionize PHP with “Hip Hop”
ขอบคุณที่มา http://net.tutsplus.com