Mengapa Enkapsulasi Fungsi Meningkatkan Kelajuan Pelaksanaan Kod Python?

Mary-Kate Olsen
Lepaskan: 2024-11-13 07:29:02
asal
882 orang telah melayarinya

Why Does Function Encapsulation Enhance Python Code Execution Speed?

Peningkatan Kelajuan Pelaksanaan Kod melalui Enkapsulasi Fungsi

Apabila melaksanakan kod Python, diperhatikan bahawa kod yang terkandung dalam fungsi berjalan dengan ketara lebih pantas daripada kod yang sama dilaksanakan di luar fungsi. Untuk menyiasat fenomena ini, mari kita menganalisis coretan kod ringkas:

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

Kod ini berjalan dalam kira-kira 1.8 saat apabila dilaksanakan dalam fungsi main(). Walau bagaimanapun, jika gelung for diletakkan di luar fungsi, masa pelaksanaan meningkat kepada sekitar 4.5 saat:

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

Punca perbezaan prestasi ini terletak pada cara Python menyusun kod. Apabila kod dilaksanakan dalam fungsi, ia disusun ke dalam bentuk yang dikenali sebagai bytecode. Bytecode ialah urutan arahan yang Mesin Maya Python (PVM) laksanakan dengan lebih cekap daripada kod Python asal.

Memeriksa kod bait untuk coretan kod menggunakan modul dis mendedahkan perbezaannya:

Dalam masa a fungsi:

  2           0 SETUP_LOOP              20 (to 23)
              3 LOAD_GLOBAL              0 (xrange)
              6 LOAD_CONST               3 (100000000)
              9 CALL_FUNCTION            1
             12 GET_ITER            
        >>   13 FOR_ITER                 6 (to 22)
             16 STORE_FAST               0 (i)

  3          19 JUMP_ABSOLUTE           13
        >>   22 POP_BLOCK           
        >>   23 LOAD_CONST               0 (None)
             26 RETURN_VALUE        
Salin selepas log masuk

Di luar fungsi:

  1           0 SETUP_LOOP              20 (to 23)
              3 LOAD_NAME                0 (xrange)
              6 LOAD_CONST               3 (100000000)
              9 CALL_FUNCTION            1
             12 GET_ITER            
        >>   13 FOR_ITER                 6 (to 22)
             16 STORE_NAME               1 (i)

  2          19 JUMP_ABSOLUTE           13
        >>   22 POP_BLOCK           
        >>   23 LOAD_CONST               2 (None)
             26 RETURN_VALUE        
Salin selepas log masuk

Perbezaan penting adalah dalam arahan di baris 16 dan 19. Dalam fungsi, pembolehubah i disimpan menggunakan STORE_FAST, yang dioptimumkan untuk pembolehubah tempatan. Walau bagaimanapun, di luar fungsi, i disimpan menggunakan STORE_NAME, yang lebih intensif dari segi pengiraan kerana ia berkaitan dengan pembolehubah global.

Oleh itu, dengan merangkum kod dalam fungsi, kami mengoptimumkan penyimpanan dan pengambilan semula pembolehubah, menghasilkan dalam masa pelaksanaan yang lebih pantas.

Atas ialah kandungan terperinci Mengapa Enkapsulasi Fungsi Meningkatkan Kelajuan Pelaksanaan Kod 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