แม้ว่าภาษา Python จะมีความดีงามหลายๆ อย่างโดยเฉพาะตัว syntax ที่เข้าใจได้ง่ายมาก แต่โครงสร้างของ Python เองนั้นยังคงมีปัญหาในแง่ของประสิทธิภาพ และการทำงานแบบขนานบนคอมพิวเตอร์ที่มีหลายซีพียูอยู่
งานนี้กูเกิลในฐานะคนใช้ Python ระดับ "ตัวพ่อ" คนหนึ่ง (Guido van Rossum คนสร้าง Python ก็ทำงานที่กูเกิล) ก็เปิดโครงการพัฒนา Python ในชื่อโครงการ unladen-shallow โดยมีเป้าหมายคือ
ความเข้ากันได้ของโครงการนี้จะเป็นความเข้ากันได้ในระดับซอร์ส นั้นคือโปรแกรมที่ต้องการใช้ Python รุ่นของกูเกิลนี้จะต้องคอมไพล์ใหม่ แต่ก็ไม่ใช่ปัญหาใหญ่นักสำหรับโลกโอเพนซอร์ส
ที่น่าสนใจคือโครงการนี้มีความหวังว่าจะขจัด Global Interpreter Lock (GIL) ที่เป็นปัญหาหลักที่ทำให้ภาษา Python ไม่สามารถทำงานได้เต็มประสิทธิภาพเมื่อใช้บนเครื่องหลายซีพียูมานาน และมีความพยายามแก้ปัญหานี้หลายต่อหลายครั้งแล้ว
ตัว Guido van Rossum เองเคยตั้งเงื่อนไขในการแก้ไขปัญหานี้ไว้ว่าการทำให้ Python รองรับ Multi-Core นั้นจะต้องไม่ไปลดประสิทธิภาพของซอฟต์แวร์ปรกติลง
ที่มา - ArsTechnica, unladen-shallow
Comments
โอ้ววว ชอบจัง คลอดออกมาเร็ว ๆ นะครับบบบ จะได้อัพเกรด
ลาก่อน GIL!!!
โอ้โห ปรับแรงกว่าเดิม 5 เท่า sugree ชอบเลย
ผมก็คงต้องหันมาจริงจังบ้างแล้ว
5 เท่า!! อย่างน้อย!! ตอนนี่มันก็เร็วโขแล้วนะ!
:→♀MOSS♂←:A LITTLE PLANT ON THE ROCK.
มันจะเร็วยังไงแต่ผมว่ามันก็ยังช้าอยู่นะครับ
onedd.net
onedd.net
ช้ายังไงครับช่วยอธิบายหน่อยครับผมจะได้หลีกเลี่ยง
แค่เทียบกับ Java ก็ช้ากว่ามากๆ แล้วครับ
อ๋อเข้าใจละครับ
เห็นด้วย
Java VM สมัยใหม่คอมไพล์ byte code เป็น native code
ช้าตอนเปิดโปรแกรม
ช้าตอนโหลด JVM :P
ขอโทษครับถ้าผมผิดพลาดประการใด ผมว่ามันเร็วแล้ว แต่ว่า 5 เท่านี่มันเหลือเชื่อ
ความเร็วหลักๆ ยังไงก็น่าจะมาจาก algorithm ที่ดีอยู่ดี
ภาษาดี algo ห่วยแตก โปรแกรมช้าเป็นเต่าแน่นอน :)
Moss 's blog
อยากให้เกิดกับ Ruby มั่ง
_______________________
อำลา
IronPython ไม่มี GIL นะครับ
แล้ว R จะได้อานิสงส์ไปด้วยไหมครับ...
_________________pawinpawin | blog
จริงๆ แล้วถ้าใครใช้ 2.6.x ลองใช้ multiprocessing ดูก็ได้ครับ
ถ้าใช้ 2.4/2.5 ก็เอาตัวนี้ไปลง http://code.google.com/p/python-multiprocessing/
@sugree ลองทำ benchmark โดยใช้ multiprocessing ดูมั้ยครับ?
PEP-371 แค่พยายามเลี่ยง GIL โดยแยกโปรเซส แต่ GIL ตัวจริงยังอยู่เหมือนเดิมทุกอย่าง แยกโปรเซสแล้วจะใช้ address space แยกกันจึงไม่มี GIL ถ้าจะใช้วิธีนี้ต้องแก้โค้ดเก่าทั้งหมด ห้ามใช้ thread แบบเดิม ต้องส่งข้อมูลกันด้วย IPC แทน
ถ้าเชือด GIL ออกได้โดยไม่ต้องแก้โค้ดจะดีกว่านะ
IPC เจอโปรแกรมที่ highly coupled ก็เดี๊ยงครับ เสียเวลาส่งข้อมูลไปมามหาศาล
LewCPE
lewcpe.com, @wasonliw
Java หนาวแน่นอน
---
Khajochi Blog : It's not a Bug ... It's a Feature
แฟนพันธุ์แท้สตีฟจ็อบส์ | MacThai.com
สงสัย ต้องหัดอย่างจริงจังๆซ่ะแล้ว