Tetapi apakah ada batasan teknis atau fitur bahasa yang mencegah skrip Python saya menjadi secepat program setara C ++?
Tidak. Ini hanya masalah uang dan sumber daya yang dituangkan untuk membuat C ++ berjalan cepat vs. uang dan sumber daya yang dituangkan untuk membuat Python berjalan cepat.
Misalnya, ketika Self VM keluar, itu bukan hanya bahasa OO dinamis tercepat, itu adalah periode bahasa OO tercepat. Meskipun menjadi bahasa yang sangat dinamis (lebih dari Python, Ruby, PHP atau JavaScript, misalnya), itu lebih cepat daripada sebagian besar implementasi C ++ yang tersedia.
Tapi kemudian Sun membatalkan proyek Self (bahasa OO tujuan umum yang matang untuk mengembangkan sistem besar) untuk fokus pada bahasa scripting kecil untuk menu animasi di kotak atas TV (Anda mungkin pernah mendengar tentang itu, itu disebut Java), tidak ada lebih banyak dana. Pada saat yang sama, Intel, IBM, Microsoft, Sun, Metrowerks, HP et al. menghabiskan banyak uang dan sumber daya membuat C ++ cepat. Produsen CPU menambahkan fitur ke chip mereka untuk membuat C ++ lebih cepat. Sistem Operasi ditulis atau dimodifikasi untuk membuat C ++ lebih cepat. Jadi, C ++ cepat.
Saya tidak terlalu terbiasa dengan Python, saya lebih merupakan orang Ruby, jadi saya akan memberikan contoh dari Ruby: Hash
kelas (setara dalam fungsi dan pentingnya dengan dict
Python) dalam implementasi Rubinius Ruby ditulis dalam 100% Ruby murni; namun itu bersaing dengan baik dan kadang-kadang bahkan mengungguli Hash
kelas dalam YARV yang ditulis dengan tangan-dioptimalkan C. Dan dibandingkan dengan beberapa sistem Lisp atau Smalltalk komersial (atau Self VM yang disebutkan sebelumnya), kompiler Rubinius bahkan tidak sepintar itu .
Tidak ada yang melekat pada Python yang membuatnya lambat. Ada beberapa fitur dalam prosesor dan sistem operasi saat ini yang melukai Python (mis. Memori virtual dikenal buruk untuk kinerja pengumpulan sampah). Ada fitur yang membantu C ++ tetapi tidak membantu Python (CPU modern mencoba untuk menghindari kesalahan cache, karena mereka sangat mahal. Sayangnya, menghindari kesalahan cache sulit ketika Anda memiliki OO dan polimorfisme. Sebaliknya, Anda harus mengurangi biaya cache CPU Azul Vega, yang dirancang untuk Java, melakukan hal ini.)
Jika Anda menghabiskan banyak uang, penelitian dan sumber daya untuk membuat Python cepat, seperti yang dilakukan untuk C ++, dan Anda menghabiskan banyak uang, penelitian dan sumber daya untuk membuat sistem operasi yang membuat program Python berjalan cepat seperti yang dilakukan untuk C ++ dan Anda menghabiskan banyak uang, penelitian dan sumber daya untuk membuat CPU yang membuat program Python berjalan cepat seperti yang dilakukan untuk C ++, maka tidak ada keraguan dalam pikiran saya bahwa Python dapat mencapai kinerja yang sebanding dengan C ++.
Kami telah melihat dengan ECMAScript apa yang dapat terjadi jika hanya satu pemain yang serius tentang kinerja. Dalam setahun, pada dasarnya kami mengalami peningkatan kinerja 10 kali lipat untuk semua vendor besar.