ทำไมหลามจึงไม่มีสิ่งเหล่านี้
ฉันไม่แน่ใจว่าทำไมคุณคิดว่าไม่มีการใช้งาน Python ที่ใส่ใจกับประสิทธิภาพ PyPy , IronPythonและJythonเป็นการนำ Python มาใช้ในอุตสาหกรรมที่มีความแข็งแกร่งและพร้อมสำหรับการผลิตซึ่งให้ความสำคัญกับประสิทธิภาพ Pystonเป็นการใช้งานในการพัฒนาที่ถูกสร้างขึ้นโดยเฉพาะสำหรับประสิทธิภาพ Unladen SwallowและPsycoเป็นโครงการเพื่อปรับปรุงประสิทธิภาพของ Python
อย่างไรก็ตามความจริงที่ว่าผู้ใช้ CPython มีจำนวนมากกว่าฐานผู้ใช้รวมทั้งหมดของการใช้งานอื่น ๆ ที่ Unladen Swallow ถูกปฏิเสธโดยชุมชนว่าโครงการเหล่านี้ส่วนใหญ่ตายหรือดิ้นรนเพื่อดึงดูดนักพัฒนาควรบอกอะไรเกี่ยวกับงูใหญ่ ประสิทธิภาพของค่าชุมชน
คำตอบนี้เป็นตัวอย่างที่ดีของความคิดทั่วไปของชุมชน Python: แทนที่จะแก้ไขปัญหาด้านประสิทธิภาพพวกเขาเพียงต้องการเขียนโค้ดที่ไม่ใช่ Python
ฉันดู PyPy และ IronPython ซึ่งทั้งคู่อ้างว่าความเร็วเพิ่มขึ้น PyPy ฉันไม่เข้าใจว่าการใช้งาน Python ในภาษาไพ ธ อนเป็นภาษาที่ตีความจะเร็วกว่าการนำไปอ้างอิงใน C ได้อย่างไร
ก่อนอื่น: มันไม่สำคัญว่าภาษาใดที่คอมไพเลอร์จะถูกเขียนหลังจากนั้นคอมไพเลอร์จะถูกดำเนินการเพียงครั้งเดียวดังนั้นแม้ว่ามันจะช้าก็ตามมันก็ไม่สำคัญ: ประสิทธิภาพของคอมไพเลอร์นั้นไม่เกี่ยวข้องสิ่งที่เกี่ยวข้อง คือประสิทธิภาพของผลลัพธ์ของคอมไพเลอร์
ประการที่สองเนื่องจากมันสำคัญเพียงว่าเอาต์พุตของคอมไพเลอร์นั้นเร็วแค่ไหนและคอมไพเลอร์เขียนใน Python เช่นภาษาที่คอมไพล์มันจริง ๆ สามารถทำให้ตัวเองเร็วขึ้นโดยการคอมไพล์เอง
ประการที่สามไม่มีสิ่งเช่น "ภาษาตีความ" ภาษาคือชุดของกฎและข้อ จำกัด ทางคณิตศาสตร์ มันเป็นสเปค กระดาษแผ่นหนึ่ง ภาษาไม่ได้แปลหรือแปลความหมาย ภาษาเพียงคือ การรวบรวมและการตีความเป็นลักษณะของการใช้ภาษาแม่นยำมากขึ้นผู้แปลหรือล่าม (duh!) ไม่ใช่ภาษา ทุกภาษาสามารถใช้งานได้โดยคอมไพเลอร์ ทุกภาษาสามารถใช้งานได้โดยล่าม คุณสามารถสร้างคอมไพเลอร์โดยอัตโนมัติจากล่ามและล่ามจากคอมไพเลอร์
แต่ทั้งหมดนี้ไม่สำคัญจริงๆเพราะ PyPy ไม่ได้เขียนใน Python มันเขียนไว้ในRPython RPython ประกอบด้วยสองส่วนคือภาษาการเขียนโปรแกรม RPythonและเฟรมเวิร์ก RPython
ภาษาการเขียนโปรแกรม RPython ไม่ใช่ Python มันเป็นภาษาการเขียนโปรแกรมที่แตกต่างกัน RPython เป็นภาษาการเขียนโปรแกรมแบบสแตติกในระดับเดียวกับ abstraction เหมือนกับ Java โดยมีประสิทธิภาพการทำงานแบบเดียวกับ C. RPython เป็นชุดย่อยทางไวยากรณ์และความหมายของ Python ซึ่งหมายความว่าทุกโปรแกรม RPython เป็นโปรแกรม Python ที่ถูกต้องและสามารถ ถูกเรียกใช้โดยการใช้ Python (แม้ว่าโดยทั่วไปจะมีขนาดของคำสั่งช้ากว่า แต่ก็ยังมีประโยชน์สำหรับการดีบั๊กเนื่องจากคุณสามารถเข้าถึงเครื่องมือ Python ทั้งหมดและการตีความเริ่มทันทีในขณะที่การรวบรวมภาษามักใช้เวลาประมาณ 5-10 นาที ) แต่การสนทนาไม่เป็นความจริง
เฟรมเวิร์ก RPython เป็นเฟรมเวิร์กสำหรับการเขียนการใช้ภาษาแบบไดนามิกที่มีประสิทธิภาพสูงในภาษาโปรแกรม RPython ซึ่งรวมถึงตัวรวบรวมขยะพื้นที่วัตถุโปรโตคอลเมตาวัตถุวัตถุที่กำหนดไว้ล่วงหน้าประเภทและการดำเนินงานและอื่น ๆ แต่มงกุฏเพชรคือความสามารถในการสร้างคอมไพเลอร์ JIT โดยอัตโนมัติจากล่าม: ถ้าคุณใช้ภาษาในเฟรมเวิร์ก RPython คุณจะต้องเขียนล่ามเท่านั้นเฟรมเวิร์ก RPython จะดูแล JIT
มีการนำภาษามาใช้มากมายบนแพลตฟอร์ม RPythonไม่ใช่แค่ PyPy
IronPython แนวคิดเดียวกัน แต่ฉันไม่เห็นว่า. NET Framework จะเพิ่มความเร็วได้อย่างไร
การใช้งานส่วนใหญ่ของ ISO CLI เช่นตัวแปร. NET ต่างๆของ Microsoft หรือ Mono มีการรวบรวมขยะที่ซับซ้อนตัวเพิ่มประสิทธิภาพและคอมไพเลอร์ เช่นเดียวกับการใช้ Jython และ Java
IronPython เป็นคอมไพเลอร์มันรวบรวมไพ ธ อนซอร์สโค้ดกับต้นไม้ DLR (DLR คือ Dynamic Language Runtime) ซึ่งจะถูกคอมไพล์แล้วต่อไปยังรหัสไบต์ CIL ซึ่งโดยทั่วไปแล้วจะคอมไพล์อีกครั้งเพื่อรหัสเครื่องท้องถิ่น