Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa kod C berjalan lebih cepat daripada Python?

Mengapa kod C berjalan lebih cepat daripada Python?

PHPz
PHPzke hadapan
2023-09-11 12:45:021084semak imbas

Mengapa kod C berjalan lebih cepat daripada Python?

Dalam artikel ini, kita akan mengetahui sebab kod C berjalan lebih pantas daripada Python.

Guido Van Rossum membangunkan Python, salah satu bahasa pengaturcaraan yang paling terkenal. Python popular di kalangan pembangun kerana sintaks yang jelas dan kod mudah, walaupun untuk orang baru. Mempelajari Python sangat bermanfaat bagi mereka yang baru memulakan kerjaya pengaturcaraan mereka. Mereka boleh menggunakan latihan pengaturcaraan Python, blog, video, modul dan beribu-ribu sumber lain untuk mempelajari semua aspek bahasa popular ini. Setelah selesai, anda akan dapat melakukan aktiviti pembangunan moden seperti pembangunan GUI, reka bentuk web, pentadbiran sistem, transaksi atau pengiraan kewangan yang kompleks, sains data, visualisasi dan banyak lagi.

Python lebih perlahan daripada C kerana ia adalah bahasa yang ditafsirkan.

Python lebih perlahan daripada C kerana ia adalah bahasa yang ditafsirkan.

Oleh itu, lebih banyak arahan CPU sebenar diperlukan untuk melaksanakan kenyataan yang diberikan.

Anda boleh mengesahkan sama ada nilai pembolehubah adalah kurang daripada, lebih besar daripada, atau sama persis dengan nilai itu dengan menambah nombor 1 atau membandingkannya dengan nilai yang diberikan dalam kod Python anda.

Perbezaannya ialah kod Python tidak segera dilaksanakan oleh CPU, tetapi ditafsirkan.

Ini menjadikan dunia berbeza dari segi prestasi.

Hampir selalu menggunakan mesin maya untuk menjalankan kod Python

Nama lain untuk komputer maya ialah "jurubahasa kod bait".

Kod yang ditafsirkan sentiasa lebih perlahan daripada kod mesin sebenar kerana ia memerlukan lebih banyak arahan untuk melaksanakan arahan daripada melaksanakan arahan mesin sebenar.

Contoh

Pertimbangkan ungkapan x += 1. Pada CPU Intel, kenaikan daftar ialah operasi tunggal dengan kependaman 1 dan songsangan daya pemprosesan sebanyak satu pertiga (1/3).

Dalam erti kata lain, ia merujuk kepada arahan CPU terpantas yang boleh disediakan oleh pemproses Intel.

Dalam Python, bagaimanakah x += 1 dilaksanakan?

Untuk memahami perkara ini, anda mesti terlebih dahulu memahami cara Python berfungsi secara dalaman.

Komponen dalaman Python termasuk tokenizer, penganalisis leksikal, penjana bytecode dan penterjemah bytecode -

  • Tokenizer - Ia mencipta aliran token daripada fail teks ASCII yang diberikan (kod Python).

  • #🎜🎜 #penganalisis leksikal - Kawasan Python ini melibatkan lekukan dan jarak yang betul. Semakan sintaks dilakukan pada ketika ini.

  • Bytecode Generator - Jika sebarang pengoptimuman dilakukan, ia dilakukan oleh komponen Python bagaimanapun, memandangkan Python bukan bahasa yang disusun, ia tidak sama dengan C compiler Sebagai perbandingan, skop pengoptimuman yang tersedia adalah terhad.

  • Modul Python

    dikenali sebagai "jurubahasa kod bait" mengurus strim kod bait dan menguasakan mesin maya Python (mengekalkan keadaannya).

Setelah dijana, bytecode biasanya dicache dalam ingatan.

Ini meningkatkan kelajuan kerana anda tidak perlu mengulangi tokenisasi, analisis leksikal dan proses penjanaan bytecode untuk kod yang telah dilihat oleh Python.

Jadi daripada melalui proses penciptaan tokenisasi, lexing dan bytecode setiap kali kita menggelung melalui gelung while, kita boleh terus menghantar bytecode kepada penterjemah bytecode.

Bukankah ini lebih pantas? Tidak, itu sebenarnya tidak berlaku.

Walaupun menggunakan kod bait cache lebih pantas, ia tidak melaksanakan atau beroperasi secepat kod mesin.

CPU sebenar yang menjalankan kod bukan komputer maya.

Proses penyusunan

UCSD Pascal tersusun, tidak seperti bahasa tersusun lain pada masa itu, tidak disusun ke dalam bahasa himpunan. Sebaliknya, ia disusun menjadi p-code.

Jadi apabila anda memikirkan "program Pascal yang disusun", anda memikirkan p-Code. Jika anda suka Java atau Python dan ingin berpura-pura anda telah mencipta sesuatu yang baharu, gunakan "bytecode".

Selain itu, Python juga termasuk konsep "Python tersusun", yang merujuk kepada kod bait cache yang telah diproses oleh penjana tokenizer, lexer, dan kod bait untuk mencipta cache yang boleh diberikan kepada penterjemah kod bait kod Python (aka mesin maya Python).

Apabila anda melihat fail dengan sambungan .py, ia ialah fail teks ASCII yang mengandungi kod sumber Python.

PYthon, disusun ialah apa yang dilambangkan oleh fail dengan sambungan ".pyc".

Namun, komputer maya melaksanakan kod yang dibuat.

kod asli

Setelah program dibina, ia tidak ditukar sepenuhnya kepada kod asli sehingga ia ditukar kepada arahan CPU binari asli platform yang direka bentuk untuknya.

Ini biasanya melibatkan menulis kod pemasangan, menghantarnya kepada pemasang, dan kemudian membiarkan pemasang mencipta fail objek khusus platform dan bukannya menggunakan kod bait.

Sehingga program disambungkan ke masa jalan platform, ia tidak sedia untuk digunakan. Masa jalan boleh menyediakan perkhidmatan masa jalan seperti pemuatan objek dinamik dan membina persekitaran untuk pelaksanaan kod. Dalam C tersusun, terdapat runtime. C++ yang disusun mempunyai masa jalan.

Mengapa Python lebih perlahan daripada C?

  • Python melakukan semakan kewarasan yang meluas - integer tidak pernah melimpah, memori tidak sah tidak pernah diakses, jenis tidak pernah (senyap) salah dan tatasusunan tidak pernah ditulis atau dibaca melebihi hujungnya. Dalam Python, jarang mendapat "ralat bukan tempatan", tetapi dalam C, adalah perkara biasa untuk mendapatkan ralat yang sebenarnya tidak dilaporkan ralat.

  • Pengkompil Python tidak melakukan pengoptimuman yang sangat maju (jika ada) - untuk satu perkara, kelajuan tidak sepenting dalam C, dan tidak banyak maklumat untuk diteruskan - contohnya, dalam Common Lisp (bahasa lain seperti Python (seperti bahasa dinamik), anda boleh menyediakan anotasi jenis untuk mendapatkan kelajuan yang sama seperti C - jika anda menarik diri daripada pemeriksaan keselamatan dan berjanji bahawa pembolehubah tertentu akan mempunyai jenis tertentu, anda mendapat arahan kod mesin yang sama (jika anda Terdapat pepijat dalam program dan tingkah laku pelik yang sama akan berlaku).

Kesimpulan

Dalam artikel ini, kami mengetahui tentang sebab berbeza mengapa kod C dilaksanakan lebih pantas daripada Python.

Atas ialah kandungan terperinci Mengapa kod C berjalan lebih cepat daripada Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam