ฉันคิดเสมอว่าข้อดีของ Python คือความสามารถในการอ่านโค้ดและความเร็วในการพัฒนา แต่การใช้เวลาและหน่วยความจำไม่ดีเท่า C ++
สถิติเหล่านี้ทำให้ฉันประทับใจอย่างมาก
ประสบการณ์ของคุณบอกอะไรคุณเกี่ยวกับเวลา Python เทียบกับ C ++ และการใช้หน่วยความจำ
ฉันคิดเสมอว่าข้อดีของ Python คือความสามารถในการอ่านโค้ดและความเร็วในการพัฒนา แต่การใช้เวลาและหน่วยความจำไม่ดีเท่า C ++
สถิติเหล่านี้ทำให้ฉันประทับใจอย่างมาก
ประสบการณ์ของคุณบอกอะไรคุณเกี่ยวกับเวลา Python เทียบกับ C ++ และการใช้หน่วยความจำ
คำตอบ:
ฉันคิดว่าคุณกำลังอ่านสถิติเหล่านั้นไม่ถูกต้อง พวกเขาแสดงให้เห็นว่า Python ช้ากว่า C ++ ประมาณ 400 เท่าและยกเว้นกรณีเดียว Python เป็นหน่วยความจำมากกว่า เมื่อพูดถึงขนาดแหล่งที่มา Python จะชนะแบบแบน
ประสบการณ์ของฉันกับ Python แสดงแนวโน้มที่ชัดเจนเช่นเดียวกันว่า Python อยู่ในลำดับที่ช้ากว่า C ++ ระหว่าง 10 ถึง 100 เท่าเมื่อทำการกระทืบจำนวนที่ร้ายแรง มีสาเหตุหลายประการสาเหตุหลัก ๆ คือ a) Python ถูกแปลความหมายในขณะที่ C ++ ถูกคอมไพล์ b) Python ไม่มีพื้นฐานทุกอย่างรวมถึงประเภท builtin (int, float ฯลฯ ) เป็นวัตถุ c) รายการ Python สามารถเก็บวัตถุประเภทต่างๆได้ดังนั้นแต่ละรายการจะต้องจัดเก็บข้อมูลเพิ่มเติมเกี่ยวกับประเภทของมัน สิ่งเหล่านี้ขัดขวางทั้งรันไทม์และการใช้หน่วยความจำอย่างรุนแรง
นี่ไม่ใช่เหตุผลที่จะละเลย Python ซอฟต์แวร์จำนวนมากไม่ต้องการเวลาหรือหน่วยความจำมากนักแม้ว่าจะมีปัจจัยความช้า 100 เท่าก็ตาม ต้นทุนในการพัฒนาคือจุดที่ Python ชนะด้วยรูปแบบที่เรียบง่ายและรัดกุม การปรับปรุงต้นทุนการพัฒนานี้มักจะมากกว่าต้นทุนของทรัพยากร CPU และหน่วยความจำเพิ่มเติม อย่างไรก็ตามเมื่อไม่เป็นเช่นนั้น C ++ ก็จะชนะ
numpy
และscipy
ที่มีขนาดใหญ่ฐานรหัสมีแนวโน้มที่จะมีจำนวนมากของรหัสในหลามบริสุทธิ์ทำสิ่งที่ช้ากว่าpython
C++
สคริปต์ python เข้าใกล้ความเร็วของC++
สคริปต์เมื่อเปอร์เซ็นต์ของC
โค้ดไปถึง100
ณ จุดนั้นมันไม่ใช่สคริปต์ python อีกต่อไป python กำลังเริ่มต้นอย่างแน่นอน แต่ไม่ใช่เพราะมันเร็วเท่าC++
- เพราะใช้งานง่ายกว่า
การใช้งาน Python ที่ช้าที่สุด (> 100x) ทั้งหมดในการยิงคือปฏิบัติการทางวิทยาศาสตร์ที่ต้องใช้จำนวน GFlop / s สูง คุณไม่ควรใช้ python สำหรับสิ่งเหล่านั้น วิธีที่ถูกต้องในการใช้ python คือการนำเข้าโมดูลที่ทำการคำนวณเหล่านั้นจากนั้นไปพักผ่อนกับครอบครัวในช่วงบ่าย นั่นคือวิธี pythonic :)
ประสบการณ์ของฉันเหมือนกับเกณฑ์มาตรฐาน Python อาจทำงานช้าและใช้หน่วยความจำมากขึ้น ฉันเขียนโค้ดมากน้อยกว่ามากและใช้งานได้ในครั้งแรกโดยมีการดีบักน้อยกว่ามาก เนื่องจากมันจัดการหน่วยความจำให้ฉันฉันจึงไม่ต้องจัดการหน่วยความจำใด ๆ ช่วยประหยัดเวลาในการไล่ตามการรั่วไหลของแกน
คำถามของคุณคืออะไร?
ขนาดของแหล่งที่มาไม่ใช่สิ่งที่สมเหตุสมผลในการวัด ตัวอย่างเช่นเชลล์สคริปต์ต่อไปนี้:
cat foobar
สั้นกว่า Python หรือ C ++ ที่เทียบเท่ากันมาก
cat footer
เล็กน้อย
นอกจากนี้: Psyco เทียบกับ C ++
ยังคงเป็นการเปรียบเทียบที่ไม่ดีเนื่องจากไม่มีใครทำเกณฑ์มาตรฐานของตัวเลขที่กรุบกรอบมักจะมุ่งเน้นไปที่ Python ล้วนๆ สิ่งที่ดีกว่าคือการเปรียบเทียบประสิทธิภาพของแอปพลิเคชันที่เหมือนจริงหรือ C ++ กับ NumPy เพื่อให้ทราบว่าโปรแกรมของคุณจะทำงานช้าลงอย่างเห็นได้ชัดหรือไม่
ปัญหาคือคุณมีสองภาษาที่แตกต่างกันซึ่งสามารถแก้ปัญหาสองปัญหาที่แตกต่างกัน ... มันเหมือนกับการเปรียบเทียบ C ++ กับแอสเซมเบลอร์
Python มีไว้สำหรับการพัฒนาแอปพลิเคชันอย่างรวดเร็วและเมื่อประสิทธิภาพเป็นเรื่องเล็กน้อย
C ++ ไม่ได้มีไว้สำหรับการพัฒนาแอปพลิเคชันอย่างรวดเร็วและสืบทอดความเร็วจาก C - สำหรับการเขียนโปรแกรมระดับต่ำ
เป็นปัญหาเดียวกันกับภาษาโปรแกรมที่มีการจัดการและใช้งานง่ายเช่นเคย - มันช้า (และบางครั้งก็กินหน่วยความจำ)
ภาษาเหล่านี้ใช้ในการควบคุมมากกว่าการประมวลผล ถ้าฉันจะต้องเขียนแอปพลิเคชันเพื่อแปลงรูปภาพและต้องใช้ Python ด้วยเช่นกันการประมวลผลทั้งหมดสามารถเขียนด้วย C ++ และเชื่อมต่อกับ Python ผ่านการผูกในขณะที่อินเทอร์เฟซและการควบคุมกระบวนการจะเป็น Python อย่างแน่นอน
ฉันคิดว่าสถิติเหล่านี้แสดงให้เห็นว่า Python ช้ากว่ามากและใช้หน่วยความจำมากกว่าสำหรับเกณฑ์มาตรฐานเหล่านั้นคุณแน่ใจหรือไม่ว่าคุณอ่านถูกต้องแล้ว?
จากประสบการณ์ของฉันซึ่งส่วนใหญ่เป็นการเขียนโปรแกรมที่เชื่อมต่อกับเครือข่ายและระบบไฟล์ใน Python Python ไม่ได้ช้าลงอย่างมีนัยสำคัญในทางที่สำคัญ สำหรับงานประเภทนั้นประโยชน์ของมันมีมากกว่าต้นทุน