Tags:

แม้ว่าภาษา Python จะมีความดีงามหลายๆ อย่างโดยเฉพาะตัว syntax ที่เข้าใจได้ง่ายมาก แต่โครงสร้างของ Python เองนั้นยังคงมีปัญหาในแง่ของประสิทธิภาพ และการทำงานแบบขนานบนคอมพิวเตอร์ที่มีหลายซีพียูอยู่

งานนี้กูเกิลในฐานะคนใช้ Python ระดับ "ตัวพ่อ" คนหนึ่ง (Guido van Rossum คนสร้าง Python ก็ทำงานที่กูเกิล) ก็เปิดโครงการพัฒนา Python ในชื่อโครงการ unladen-shallow โดยมีเป้าหมายคือ

  1. สร้าง Python ที่เร็วกว่าเดิมอย่างน้อยๆ 5 เท่าตัว
  2. ความเร็วในการทำงานต้องมีเสถียรภาพดีขึ้น
  3. เข้ากันได้กับซอฟต์แวร์ที่ใช้ Python เดิม
  4. เข้ากันได้กับโมดูลเดิมของ Python
  5. โครงการเป็นการสร้าง branch เพื่อเตรียมรวมกลับเข้าโครงการหลักเท่านั้น ไม่ใช่การแยก Python

ความเข้ากันได้ของโครงการนี้จะเป็นความเข้ากันได้ในระดับซอร์ส นั้นคือโปรแกรมที่ต้องการใช้ Python รุ่นของกูเกิลนี้จะต้องคอมไพล์ใหม่ แต่ก็ไม่ใช่ปัญหาใหญ่นักสำหรับโลกโอเพนซอร์ส

ที่น่าสนใจคือโครงการนี้มีความหวังว่าจะขจัด Global Interpreter Lock (GIL) ที่เป็นปัญหาหลักที่ทำให้ภาษา Python ไม่สามารถทำงานได้เต็มประสิทธิภาพเมื่อใช้บนเครื่องหลายซีพียูมานาน และมีความพยายามแก้ปัญหานี้หลายต่อหลายครั้งแล้ว

ตัว Guido van Rossum เองเคยตั้งเงื่อนไขในการแก้ไขปัญหานี้ไว้ว่าการทำให้ Python รองรับ Multi-Core นั้นจะต้องไม่ไปลดประสิทธิภาพของซอฟต์แวร์ปรกติลง

ที่มา - ArsTechnica, unladen-shallow

Comments

By: konkeanweb
konkeanweb's blog
on 27/03/09 10:44 #93278 toggle
konkeanweb's picture

โอ้ววว ชอบจัง คลอดออกมาเร็ว ๆ นะครับบบบ จะได้อัพเกรด


คนเขียนเว็บ

By: sugree
FounderWriterAndroidBlackberry
sugree's blog
on 27/03/09 10:45 #93279 toggle
sugree's picture

ลาก่อน GIL!!!

By: obiconbig
iPhone
obiconbig's blog
on 27/03/09 10:49 #93283 toggle
obiconbig's picture

โอ้โห ปรับแรงกว่าเดิม 5 เท่า sugree ชอบเลย

ผมก็คงต้องหันมาจริงจังบ้างแล้ว


meteenee.com

By: mossila
Android
mossila's blog
on 27/03/09 11:00 #93286 toggle
mossila's picture

5 เท่า!! อย่างน้อย!! ตอนนี่มันก็เร็วโขแล้วนะ! <br/>

:→♀MOSS♂←:A LITTLE PLANT ON THE ROCK.


Moss 's blog

By: wiennat
Writer
wiennat's blog
on 27/03/09 11:50 #93303 Reply to:93286 toggle
wiennat's picture

มันจะเร็วยังไงแต่ผมว่ามันก็ยังช้าอยู่นะครับ

onedd.net


onedd.net

By: chaow
Android
chaow's blog
on 27/03/09 11:59 #93306 Reply to:93303 toggle
chaow's picture

ช้ายังไงครับช่วยอธิบายหน่อยครับผมจะได้หลีกเลี่ยง


Chaow

By: qute
qute's blog
on 27/03/09 13:06 #93318 Reply to:93306 toggle
qute's picture

แค่เทียบกับ Java ก็ช้ากว่ามากๆ แล้วครับ

By: chaow
Android
chaow's blog
on 27/03/09 17:03 #93417 Reply to:93318 toggle
chaow's picture

อ๋อเข้าใจละครับ


Chaow

By: Jonix
iPhoneAndroidSymbianUbuntu
Jonix's blog
on 28/03/09 2:31 #93553 Reply to:93318 toggle
Jonix's picture

เห็นด้วย

Java VM สมัยใหม่คอมไพล์ byte code เป็น native code ช้าตอนเปิดโปรแกรม


http://www.embes.com

By: lancaster
ContributoriPhoneAndroidWindows
lancaster's blog
on 30/03/09 2:45 #93745 Reply to:93553 toggle
lancaster's picture

ช้าตอนโหลด JVM :P


Sent from my computer

By: mossila
Android
mossila's blog
on 27/03/09 16:27 #93388 Reply to:93303 toggle
mossila's picture

ขอโทษครับถ้าผมผิดพลาดประการใด ผมว่ามันเร็วแล้ว แต่ว่า 5 เท่านี่มันเหลือเชื่อ ความเร็วหลักๆ ยังไงก็น่าจะมาจาก algorithm ที่ดีอยู่ดี ภาษาดี algo ห่วยแตก โปรแกรมช้าเป็นเต่าแน่นอน :) Moss 's blog


Moss 's blog

By: lunargone
lunargone's blog
on 27/03/09 12:08 #93309 toggle
lunargone's picture

อยากให้เกิดกับ Ruby มั่ง _______________________ อำลา


ผมไม่ใช่แมว

By: cwt
iPhoneAndroid
cwt's blog
on 27/03/09 13:33 #93330 toggle
cwt's picture

IronPython ไม่มี GIL นะครับ

By: pawinpawin
Writer
pawinpawin's blog
on 27/03/09 13:41 #93333 toggle
pawinpawin's picture

แล้ว R จะได้อานิสงส์ไปด้วยไหมครับ... _________________pawinpawin | blog


pawinpawin | clinicalepi.com

By: cwt
iPhoneAndroid
cwt's blog
on 27/03/09 13:44 #93334 toggle
cwt's picture

จริงๆ แล้วถ้าใครใช้ 2.6.x ลองใช้ multiprocessing ดูก็ได้ครับ

ถ้าใช้ 2.4/2.5 ก็เอาตัวนี้ไปลง http://code.google.com/p/python-multiprocessing/

@sugree ลองทำ benchmark โดยใช้ multiprocessing ดูมั้ยครับ?

By: sugree
FounderWriterAndroidBlackberry
sugree's blog
on 27/03/09 14:14 #93344 Reply to:93334 toggle
sugree's picture

PEP-371 แค่พยายามเลี่ยง GIL โดยแยกโปรเซส แต่ GIL ตัวจริงยังอยู่เหมือนเดิมทุกอย่าง แยกโปรเซสแล้วจะใช้ address space แยกกันจึงไม่มี GIL ถ้าจะใช้วิธีนี้ต้องแก้โค้ดเก่าทั้งหมด ห้ามใช้ thread แบบเดิม ต้องส่งข้อมูลกันด้วย IPC แทน

ถ้าเชือด GIL ออกได้โดยไม่ต้องแก้โค้ดจะดีกว่านะ

By: lew
FounderAndroidSymbian
lew's blog
on 27/03/09 14:28 #93350 Reply to:93334 toggle
lew's picture

IPC เจอโปรแกรมที่ highly coupled ก็เดี๊ยงครับ เสียเวลาส่งข้อมูลไปมามหาศาล

LewCPE


LewCPE's Google+

By: khajochi
WriteriPhone
khajochi's blog
on 27/03/09 16:45 #93402 toggle
khajochi's picture

Java หนาวแน่นอน

--- Khajochi Blog : It's not a Bug ... It's a Feature


Khajochi Blog : It's not a Bug ... It's a Feature

By: absulation
absulation's blog
on 27/03/09 17:29 #93426 toggle
absulation's picture

สงสัย ต้องหัดอย่างจริงจังๆซ่ะแล้ว