Mengapa Kod Pengekapan dalam Fungsi Meningkatkan Prestasi Python?

Patricia Arquette
Lepaskan: 2024-11-11 02:21:02
asal
916 orang telah melayarinya

Why Does Encapsulating Code in Functions Increase Python Performance?

Pengoptimuman Prestasi Kod Python dengan Fungsi

Menjalankan kod khusus dalam fungsi dalam Python telah diperhatikan untuk meningkatkan kelajuan pelaksanaannya dengan ketara. Mari kita siasat sebab di sebalik tingkah laku ingin tahu ini.

Pada mulanya, gelung for dikapsulkan dalam fungsi:

def main():
    for i in xrange(10**8):
        pass
main()
Salin selepas log masuk

Kod ini mempamerkan prestasi yang membanggakan, dilengkapkan dalam masa kurang dari 2 saat. Walau bagaimanapun, apabila gelung for dilaksanakan secara bebas, tanpa disertakan dalam fungsi:

for i in xrange(10**8):
    pass
Salin selepas log masuk

masa pelaksanaannya melonjak kepada lebih 4 saat. Untuk merungkai misteri di sebalik perbezaan ini, kita mesti menyelidiki kod bait yang dijana oleh penterjemah Python.

Memeriksa kod bait fungsi, kami mendapati pembolehubah i diperuntukkan menggunakan opcode STORE_FAST.

LOAD_FAST               0 (i)
Salin selepas log masuk

Apabila gelung for dilaksanakan di peringkat atas, pembolehubah i ditetapkan menggunakan opcode STORE_NAME.

STORE_NAME               1 (i)
Salin selepas log masuk

Yang penting, telah ditetapkan bahawa STORE_FAST ialah operasi yang lebih cekap daripada STORE_NAME. Kecekapan ini berpunca daripada fakta bahawa apabila i ialah pembolehubah tempatan dalam fungsi (menggunakan STORE_FAST), ia disimpan pada bingkai tindanan. Sebaliknya, apabila i ialah pembolehubah global (menggunakan STORE_NAME), ia mesti disimpan dalam kamus pembolehubah global.

Untuk memeriksa kod bait dengan lebih lanjut, anda boleh menggunakan modul dis. Untuk pembongkaran terus fungsi, modul dis boleh digunakan. Walau bagaimanapun, untuk pembongkaran kod yang dilaksanakan di peringkat atas, kompilasi terbina mesti dimanfaatkan.

Dengan memahami operasi kod bait yang mendasari, kami boleh memanfaatkan kuasa fungsi dalam Python untuk mengoptimumkan kelajuan pelaksanaan kod dengan berkesan.

Atas ialah kandungan terperinci Mengapa Kod Pengekapan dalam Fungsi Meningkatkan Prestasi Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan