Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Kod Python Fungsi Dalam Lebih Cepat?

Mengapa Kod Python Fungsi Dalam Lebih Cepat?

Susan Sarandon
Susan Sarandonasal
2024-11-12 22:01:01633semak imbas

Why is Python Code Faster Inside Functions?

Kod Python yang Lebih Pantas dalam Fungsi: Mendedahkan Pelaksanaan Dioptimumkan

Apabila melaksanakan kod Python, melampirkan operasi dalam fungsi selalunya membawa kepada peningkatan prestasi yang ketara. Perbezaan ketara ini mencetuskan rasa ingin tahu:为何 Python 代码在函数中执行更快?

Menyiasat Perbezaan Kelajuan

Pertimbangkan kod berikut coretan:

def main():
    for i in xrange(10**8):
        pass
main()

Menjalankan kod ini menghasilkan masa lebih kurang 1.8 saat. Walau bagaimanapun, apabila gelung for dilaksanakan di luar fungsi:

for i in xrange(10**8):
    pass

Pelaksanaan mengambil masa lebih lama 4.5 saat.

Analisis Bytecode: Mendedahkan Sebab Asas

Untuk memahami percanggahan prestasi ini, kami menyelidiki kod bait yang dijana oleh Python. Di dalam fungsi, kod bait menunjukkan jujukan operasi yang menyediakan gelung, mengira julat dan berulang melaluinya. Struktur ini dioptimumkan untuk kelajuan.

Di peringkat atas, kod bait berbeza sedikit. Pembolehubah i diisytiharkan sebagai global, menghasilkan operasi kedai yang lebih perlahan (STORE_NAME) daripada operasi kedai tempatan (STORE_FAST) yang digunakan dalam fungsi.

Untuk memeriksa bytecode, modul dis menyediakan bantuan yang berharga. Arahan berikut membongkar fungsi dan kod peringkat atas masing-masing:

import dis
dis.dis(main)
dis.dis(compile('for i in xrange(10**8): pass', '', 'exec'))

Kesimpulan

Kelebihan prestasi melaksanakan kod dalam fungsi dalam Python berpunca daripada pengoptimuman dalam pelaksanaan bytecode. Penggunaan pembolehubah tempatan, yang diwakili oleh arahan STORE_FAST, meningkatkan kelajuan pelaksanaan dengan ketara berbanding menggunakan pembolehubah global, yang melibatkan arahan STORE_NAME yang lebih perlahan.

Atas ialah kandungan terperinci Mengapa Kod Python Fungsi Dalam Lebih Cepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn