อัพเดต: 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 ที่แจ้งข่าวด้วยครับ
on
ใน PHP การแปลงภาษาโดยไม่ต้อง
Ford AntiTrust Wed, 03/02/2010 - 09:58
ใน PHP การแปลงภาษาโดยไม่ต้อง interpret บ่อยๆ ก็ทำได้ด้วยการใช้ APC หรือพวก opcode cache แทนซึ่งได้ประสิทธิภาพระดับที่ยอมรับได้ ซึ่งอันนี้อ้างอิงจาก slide ใน Facebook Engineering Tech Talks ซึ่งก็ทำให้เร็วขึ้นได้เยอะมากๆ แต่ถ้าใช้ในแบบใหม่ก็น่าจะเร็วขึ้นได้อีก ต้องรอดูว่าจะใช้เทคนิคอย่างไรซึ่งน่าสนใจมากๆ
ประกาศแล้วนะครับ HipHop for
luckyman Wed, 03/02/2010 - 10:01
ประกาศแล้วนะครับ HipHop for PHP ดูเหมือนจะเป็นคอมไพเลอร์ที่คอมไพล์ PHP ไป C++ ไม่ใช่ JIT
โอ้ ผมอ่านข่าวเมื่อคืน
mk Wed, 03/02/2010 - 10:27
In reply to ประกาศแล้วนะครับ HipHop for by luckyman
โอ้ ผมอ่านข่าวเมื่อคืน มาเขียนตอนเช้า ประกาศซะแล้ว
เดี๋ยวอัพเดตในข่าวให้ครับ
ดีครับ ^ ^ แต่ flash
cloverink Wed, 03/02/2010 - 10:11
ดีครับ ^ ^
แต่ flash ยังช้าอยู่ดี -0-
เอ
Slimy Wed, 03/02/2010 - 15:03
In reply to ดีครับ ^ ^ แต่ flash by cloverink
เอ พวกแอปเกมส์นิมันดึงจากเจ้าของใช่ปะครับ
น่าสนใจมากๆเลย ปกติใช้แต่ APC
vittee Wed, 03/02/2010 - 10:34
น่าสนใจมากๆเลย ปกติใช้แต่ APC
ว่าจะเข้ามาบอกพอดีว่าประกาศแล
wiennat Wed, 03/02/2010 - 10:56
ว่าจะเข้ามาบอกพอดีว่าประกาศแล้ว
ผมเพิ่งอ่านจบที่ Engineering note กลับมาดูที่ Blognone ก็ขึ้นมาพอดี
ระดับลึกๆแล้ว C, C++
risc Wed, 03/02/2010 - 11:54
ระดับลึกๆแล้ว C, C++ ก็ยังต้องใช้งานอยู่ดี
ทำ C++ ต่อไป อิอิ
mr_tawan Wed, 03/02/2010 - 15:44
In reply to ระดับลึกๆแล้ว C, C++ by risc
ทำ C++ ต่อไป อิอิ
+10
ZetaSolid Wed, 03/02/2010 - 21:18
In reply to ทำ C++ ต่อไป อิอิ by mr_tawan
+10
น่าสนใจมากๆ
nblue Wed, 03/02/2010 - 12:24
น่าสนใจมากๆ
เหมือนกับจะบอกเป็นนัยว่าทำยัง
kittipat Wed, 03/02/2010 - 13:13
เหมือนกับจะบอกเป็นนัยว่าทำยังไง PHP ก็ไม่เร็วขึ้นกว่าปัจจุบันได้ซักเท่าไหร่
ขอให้มันเร็วขึ้นหน่อยเถอะ
mednoon Wed, 03/02/2010 - 15:26
In reply to เหมือนกับจะบอกเป็นนัยว่าทำยัง by kittipat
ขอให้มันเร็วขึ้นหน่อยเถอะ ของหากินหลักผมเลย
ฝรั่งนี่เค้าเจอว่าช้าก็ไปแก้ต
khajochi Wed, 03/02/2010 - 13:35
ฝรั่งนี่เค้าเจอว่าช้าก็ไปแก้ตัว engine ระดับ core หรือหาวิธีพลิกแพลงระดับ compiler กันเลยนะเนี่ย .. แอบเคยได้ยินบางคนแถวๆ กระทรวงบอกว่า "ถ้ามันช้า คุณก็แค่เพิ่ม server เข้าไปซิ"
มันเป็นวิธีที่แก้ปัญหาได้เร็ว
mednoon Wed, 03/02/2010 - 15:23
In reply to ฝรั่งนี่เค้าเจอว่าช้าก็ไปแก้ต by khajochi
มันเป็นวิธีที่แก้ปัญหาได้เร็วที่สุดแบบกำปั้นทุบดินด้วย
ผู้บริหารไม่ชอบการวิจัยและพัฒนา แต่ชอบสิ่งที่จับต้องได้ และต้องได้เดี๋ยวนี้ ทันที บัดดลลล
อย่างว่าแหละ จะผู้บริหารจะรู้เรื่อง IT เชิงลึกสักเท่าไรเชียวครับ ในเมื่อโปรแกรเมอร์เราเองก็อยู่ในระดับที่ไม่เก่งพอจะไปคุ้ยห้องเครื่องเหมือนฝรั่งเขาด้วย
ผมว่าคนที่ทำได้มีเยอะนะครับ
kittipat Thu, 04/02/2010 - 15:26
In reply to มันเป็นวิธีที่แก้ปัญหาได้เร็ว by mednoon
ผมว่าคนที่ทำได้มีเยอะนะครับ แต่ไม่มีคนจ่ายเงินให้ทำ ก็เลยไม่มีคนทำ
+101
Thaina Thu, 04/02/2010 - 15:44
In reply to ผมว่าคนที่ทำได้มีเยอะนะครับ by kittipat
+101
ผมว่าปัญหานี้มันเกิดตั้งแต่ระ
Base Sun, 11/12/2011 - 11:13
In reply to ผมว่าคนที่ทำได้มีเยอะนะครับ by kittipat
ผมว่าปัญหานี้มันเกิดตั้งแต่ระดับโครงสร้างแล้วครับ
ปล. คำว่า "ระดับโครงสร้าง" นี้ไม่ขออธิบายนะครับ
โครงสร้างงบประมาณ
lojorider Mon, 16/12/2013 - 14:47
In reply to ผมว่าปัญหานี้มันเกิดตั้งแต่ระ by Base
โครงสร้างงบประมาณ ไรงี้หรือป่าวครับ
อดไม่ได้ขอพูดเรื่องความสามารถ
kittipat Thu, 04/02/2010 - 15:59
In reply to มันเป็นวิธีที่แก้ปัญหาได้เร็ว by mednoon
อดไม่ได้ขอพูดเรื่องความสามารถโปรแกรมเมอร์ไทยหน่อยแล้วกัน
คนเก่งจริงมีครับ มีเยอะด้วย ผมเจอมาหลายคนแล้ว ... แต่ส่วนมากไม่ได้ทำงาน(เป็นโปรแกรมเมอร์)อยู่ที่ไทย
และจากที่เคยพบเคยเจอมา จะเก่งไม่เก่งก็ขึ้นอยู่กับพื้นฐานอย่างเดียว ถ้าพื้นฐานแน่น ทำอะไรก็ดีหมดครับ เคยได้ยินคำพูดว่าเรียนไปไม่ได้ใช้บ่อยๆ ผมว่ามันจริงแค่ครึ่งเดียว คือบางทีงานมันก็ง่ายเกินจริงๆ แต่ถ้าเจอประเภทที่ทำงานแล้วติด ทำไม่ได้ ทำได้แต่ช้า พวกนี้เกิดจากพื้นฐานไม่แน่น เอาไปประยุกต์ไม่เป็นทั้งนั้นครับ
พื้นฐานไม่แน่น
EThaiZone Tue, 08/03/2011 - 12:26
In reply to อดไม่ได้ขอพูดเรื่องความสามารถ by kittipat
พื้นฐานไม่แน่น เอาไปประยุกต์ไม่เป็น
+10000
ถ้าเขาจ่ายค่าไฟไหวผมว่าไม่ใช่
mr_tawan Wed, 03/02/2010 - 15:46
In reply to ฝรั่งนี่เค้าเจอว่าช้าก็ไปแก้ต by khajochi
ถ้าเขาจ่ายค่าไฟไหวผมว่าไม่ใช่ปัญหา (ฮา)
แต่ระดับ Facebook น่าจะต้องคำนึงถึง Green Data Center ด้วย การใช้สิ่งที่มีอยู่น่าจะเป็นทางเลือกที่ดีกว่า
อีกอย่าง Server Farm ระดับรองรับผู้ใช้ได้หลักร้อยล้านคนนี่ ... ถ้าจะเพิ่ม Server เข้าไป ... ไม่รู้ต้องใช้งบประมาณอีกเท่าไหร่
ผมว่าเว็บบ้านเรายังไม่ใหญ่พอใ
wiennat Wed, 03/02/2010 - 17:20
In reply to ฝรั่งนี่เค้าเจอว่าช้าก็ไปแก้ต by khajochi
ผมว่าเว็บบ้านเรายังไม่ใหญ่พอให้กลับมาคิดว่าถ้าความเร็วเพิ่มขึ้น 50% แล้วจะช่วยลดต้นทุนได้มหาศาลน่ะครับ ซึ่งการเอาเครื่องโยนเข้าไปเพิ่มอาจจะให้ผลตอบแทนที่คุ้มค่ากว่าก็ได้
นึกถึงว่าการเพิ่มเครื่องเข้าไป 2 เครื่องในระบบที่มีอยู่แล้ว 2 เครื่องทำให้ระบบทำงานได้เร็วขึ้นกว่าเดิมเยอะโดยเสียเงินเท่ากับจ้างคน 5 คนเป็นเวลา 1 เดือน แต่ว่าถ้าเอาเงินไปพัฒนาระบบให้ได้ผลเท่ากันโดยที่ใช้ฮาร์ดแวร์เท่ากันอาจจะทำไม่ได้หรือใช้เงินมากกว่าด้วยซ้ำ
แต่สำหรับ facebook ผลลัพธ์ที่ได้อาจจะคุ้มค่ากว่าเพราะจำนวนเครื่องเค้าเยอะอยูแล้ว เพิ่มอีก 10 - 20 เครื่องอาจจะไม่พอ ไปแก้หลักการทำงานเลยอาจจะได้ผลดีกว่าในระยะยาว
pantip.com ??
kittipat Thu, 04/02/2010 - 15:20
In reply to ผมว่าเว็บบ้านเรายังไม่ใหญ่พอใ by wiennat
pantip.com ??
ดีใจจนไม่รู้จะพูดยังไง กระแส
Thaina Wed, 03/02/2010 - 14:15
ดีใจจนไม่รู้จะพูดยังไง
กระแส Web Server เริ่มไหลกลับมาทาง JIT / Native เสียที
asp.net/jsp ทำงานอย่างไร?
jane Wed, 03/02/2010 - 16:21
asp.net/jsp ทำงานอย่างไร?
ไม่แปลกใจเลยครับที่เว็บ
designil Wed, 03/02/2010 - 19:31
ไม่แปลกใจเลยครับที่เว็บ Facebook รองรับคนได้มากขนาดนั้น จะว่าไปตั้งแต่ใช้มายังไม่เคยเห็น Facebook ล่มเลยครับ แต่ Twitter เห็นบ้างเป็นบางที อย่างเช่นตอนแถลงข่าว iPad นี่ทวีตเรื่องนี้กันพันกว่าคนภายในไม่ถึงนาที
จับแต่งานเล็กๆ เขียนง่ายๆ
b98se Wed, 03/02/2010 - 20:32
จับแต่งานเล็กๆ เขียนง่ายๆ ได้ส่งงานเร็วๆ ดีกว่า
php จะช้ายังไงไม่สน
ผมสรรเสริญคนคิดภาษา C,C++
mednoon Thu, 04/02/2010 - 08:56
ผมสรรเสริญคนคิดภาษา C,C++ มากครับคุณคิดภาษานี้มาหากินได้เป็น 100 ปีกันเลยทีเดียว
Facebook ไม่ล่ม
heha Thu, 04/02/2010 - 13:05
Facebook ไม่ล่ม แต่ก็มีปัญหาเรื่อง API บ่อยๆ อยู่ครับ (มักจะเป็นเรื่อง performance ช้าลง หรือ bug) เป็นปัญหารายอาทิตย์กันเลยทีเดียว แต่ก็ยังดีกว่า twitter ละนะ :P
ปล. PHP vs Ruby?
เอาบทความมาฝาก
mokin Thu, 04/02/2010 - 20:49
เอาบทความมาฝาก เพื่ออ่านข่าวแล้วงงๆ ว่ามันทำอะไรได้บ้าง โครงสร้างเป็นไง
Facebook Hopes to Revolutionize PHP with “Hip Hop”
ขอบคุณที่มา http://net.tutsplus.com