Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Enkapsulasi Fungsi Meningkatkan Kelajuan Pelaksanaan Kod Python?

Mengapa Enkapsulasi Fungsi Meningkatkan Kelajuan Pelaksanaan Kod Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-13 07:29:02877semak imbas

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()

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

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        

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        

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!

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