Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan modul timeit untuk ujian prestasi kod dalam Python 3.x

Cara menggunakan modul timeit untuk ujian prestasi kod dalam Python 3.x

王林
王林asal
2023-07-31 14:37:50726semak imbas

Cara menggunakan modul timeit untuk ujian prestasi kod dalam Python 3.x

Pengenalan:
Apabila membangunkan dan mengoptimumkan program Python, kita selalunya perlu menilai prestasi segmen kod yang berbeza. Ujian prestasi boleh membantu kami mengenal pasti kesesakan dalam kod dan menyediakan asas untuk strategi pengoptimuman yang berbeza. Python menyediakan modul timeit untuk menguji masa pelaksanaan segmen kod kecil dan membandingkan kecekapan pelaksanaan yang berbeza. Artikel ini akan memperkenalkan cara menggunakan modul timeit untuk ujian prestasi kod dan menyediakan beberapa contoh aplikasi biasa.

Penggunaan asas modul timeit: Modul
timeit menyediakan antara muka yang ringkas dan mudah digunakan untuk mengukur masa pelaksanaan serpihan kod. Dalam penterjemah interaktif Python, kita boleh menggunakan modul timeit untuk menjalankan kod melalui baris arahan. Berikut ialah contoh penggunaan asas modul timeit:

import timeit

code = '''
a = 1
b = 2
c = a + b
'''

time = timeit.timeit(stmt=code, number=100000)
print(f'执行时间:{time} 秒')

Dalam contoh di atas, kami telah mentakrifkan coretan kod ringkas yang melaksanakan tiga penyataan, menambah a dan b dan memberikan hasilnya kepada c. Fungsi timeit.timeit() digunakan untuk mengukur masa pelaksanaan serpihan kod. Antaranya, parameter stmt menerima serpihan kod untuk dilaksanakan, dan parameter nombor menunjukkan bilangan kali serpihan kod akan dilaksanakan. Akhir sekali, kami mencetak masa pelaksanaan menggunakan fungsi print().

Jalankan skrip dalam baris arahan, kita akan melihat output yang serupa dengan yang berikut:

执行时间:0.006017888000006268 秒

Unit masa pelaksanaan di sini ialah saat. Dalam kes pelaksanaan tunggal, kita biasanya memerhatikan selang masa yang lebih kecil. Untuk mengukur masa pelaksanaan serpihan kod dengan lebih tepat, modul timeit menjalankan kod berbilang kali dan mengira purata masa pelaksanaan. Secara lalai, ia melaksanakan coretan kod 7 kali dan purata tiga hasil terbaik.

Selain menggunakan modul timeit melalui baris arahan, kami juga boleh menggunakan modul timeit secara langsung dalam program Python. Berikut ialah contoh:

import timeit

code = '''
a = 1
b = 2
c = a + b
'''

time = timeit.timeit(stmt=code, number=100000)
print(f'执行时间:{time} 秒')

Dalam contoh ini, kami mentakrifkan coretan kod dengan cara yang sama dan mengukur masa pelaksanaan melalui fungsi timeit.timeit(). Output yang kami dapat adalah sama seperti contoh sebelumnya.

Penggunaan lanjutan modul timeit:
Selain penggunaan asas, modul timeit juga menyediakan beberapa fungsi lanjutan untuk kawalan yang lebih halus terhadap proses ujian prestasi.

  1. Tetapkan pemasa:
    modul timeit menyokong pemasa lalai dan juga membolehkan kami menetapkan pemasa secara manual. Melalui kelas timeit.Timer(), kita boleh mencipta objek pemasa dan menggunakannya untuk mengukur masa pelaksanaan serpihan kod. Berikut ialah contoh:
import timeit

code = '''
a = 1
b = 2
c = a + b
'''

timer = timeit.Timer(stmt=code)

time = timer.timeit(number=100000)
print(f'执行时间:{time} 秒')

Dalam contoh ini, kami mula-mula mencipta pemasa objek Pemasa dan menghantar coretan kod kepadanya. Kami kemudian menggunakan kaedah timer.timeit() untuk mengukur masa pelaksanaan. Seperti yang anda lihat, output adalah sama seperti contoh sebelumnya.

  1. Laksanakan berbilang coretan kod: Modul
    timeit membolehkan kami menguji masa pelaksanaan berbilang coretan kod pada masa yang sama. Kita boleh mentakrifkan coretan berbeza dengan berbilang rentetan dan menghantarnya dalam kaedah timeit.timeit() atau timer.timeit(). Berikut ialah contoh:
import timeit

code1 = '''
a = 1
b = 2
c = a + b
'''

code2 = '''
a = 1
b = 2
c = a * b
'''

time1 = timeit.timeit(stmt=code1, number=100000)
time2 = timeit.timeit(stmt=code2, number=100000)

print(f'执行时间1:{time1} 秒')
print(f'执行时间2:{time2} 秒')

Dalam contoh ini, kami mentakrifkan dua coretan kod kod1 dan kod2, yang masing-masing mengira keputusan a + b dan a * b. Dengan memanggil fungsi timeit.timeit() masing-masing, kita mendapat masa pelaksanaan dua coretan kod. Seperti yang anda lihat, hasil output menunjukkan masa pelaksanaan kedua-dua coretan kod masing-masing.

  1. Melalui parameter melalui baris arahan:
    Apabila menggunakan modul timeit melalui baris arahan, kita boleh mengawal proses ujian dengan melepasi beberapa parameter. Parameter ini boleh digunakan untuk mengubah suai kelakuan lalai modul timeit. Berikut ialah beberapa contoh parameter yang biasa digunakan:
  • -n: Menentukan bilangan kali serpihan kod dilaksanakan.
  • -p: Cetak keputusan ujian sebagai kod Python.
  • -r: Tentukan bilangan ulangan untuk melaksanakan serpihan kod (lalai ialah 7).
  • -s: Tentukan pernyataan persediaan untuk dilaksanakan sebelum ujian.
  • -t: Matikan pemasa lalai.

Melalui parameter ini, kami boleh mengawal proses ujian modul timeit dengan lebih fleksibel. Sebagai contoh, kita boleh menggunakan parameter -n untuk menentukan bilangan kali coretan kod dilaksanakan untuk mendapatkan masa pelaksanaan yang lebih tepat. Sebagai contoh, berikut ialah contoh:

import timeit

code = '''
a = 1
b = 2
c = a + b
'''

time = timeit.timeit(stmt=code, number=10000)
print(f'执行时间:{time} 秒')

Dalam contoh ini, kami menggunakan parameter -n untuk menentukan bahawa coretan kod dilaksanakan 10,000 kali untuk mendapatkan masa pelaksanaan yang lebih tepat.

Kesimpulan:
Dengan modul timeit, kami boleh melakukan ujian prestasi kod Python dengan mudah. Ia menyediakan penggunaan mudah dan lanjutan untuk memenuhi keperluan ujian yang berbeza. Sama ada pada baris arahan atau dalam program Python, menggunakan modul timeit untuk ujian prestasi ialah alat yang berkuasa untuk membangunkan dan mengoptimumkan program Python. Saya harap kandungan artikel ini dapat membantu anda.

Rujukan:

  • Dokumentasi rasmi Python: https://docs.python.org/3/library/timeit.html

Atas ialah kandungan terperinci Cara menggunakan modul timeit untuk ujian prestasi kod dalam Python 3.x. 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