Dalam pertanyaan lain , jawaban yang diterima menyarankan untuk mengganti pernyataan if (sangat murah) dalam kode Python dengan blok coba / kecuali untuk meningkatkan kinerja.
Mengesampingkan masalah gaya pengkodean, dan dengan asumsi bahwa pengecualian tidak pernah dipicu, seberapa besar perbedaan yang dibuat (dari segi kinerja) untuk memiliki penangan pengecualian, versus tidak memilikinya, versus memiliki pernyataan if-bandingkan-ke-nol?
Jawaban:
Mengapa Anda tidak mengukurnya menggunakan
timeit
modul ? Dengan begitu Anda dapat melihat apakah itu relevan dengan aplikasi Anda.Oke, jadi saya baru saja mencoba yang berikut ini:
Hasil:
Jadi, seperti yang diharapkan, tidak memiliki penangan pengecualian sedikit lebih cepat (tetapi meledak di wajah Anda saat pengecualian terjadi), dan
try/except
lebih cepat daripada eksplisitif
selama kondisinya tidak terpenuhi.Tapi itu semua dalam urutan yang sama besarnya dan tidak mungkin menjadi masalah. Hanya jika kondisi benar-benar terpenuhi, maka
if
versinya jauh lebih cepat.sumber
try/except
lebih cepat dariif a != 0
Pertanyaan ini sebenarnya terjawab di FAQ Desain dan Sejarah :
sumber
Pertanyaan ini menyesatkan. Jika Anda menganggap pengecualiannya adalah tidak pernah dipicu, tidak ada satu pun yang merupakan kode optimal.
Jika Anda menganggap pengecualian dipicu sebagai bagian dari kondisi kesalahan, Anda sudah berada di luar ranah menginginkan kode yang optimal (dan Anda mungkin tidak menanganinya pada tingkat yang sangat rinci seperti itu).
Jika Anda menggunakan pengecualian sebagai bagian dari aliran kontrol standar - yang merupakan cara Pythonic "minta maaf, bukan izin" - maka pengecualian akan dipicu, dan biayanya bergantung pada jenis pengecualian, jenis jika , dan berapa persentase waktu Anda memperkirakan pengecualian terjadi.
sumber