Cara Mengidentifikasi Fungsi Yang Membutuhkan Waktu Eksekusi Tinggi Menggunakan cProfile

Assalamualaikum Warahmatullahi Wabarakatuh.

Pada materi kali ini saya akan membagikan cara mengetahui fungsi yang kita buat menjalankan fungsi apa saja.

Python yang menyediakan alat profil untuk mengukur kinerja dari sebuah program Python. Kode ini memungkinkan Kita untuk mengidentifikasi bagian-bagian dari kode yang membutuhkan waktu eksekusi yang tinggi atau sumber daya lainnya sehingga Kita dapat melakukan optimisasi.

 cProfile sangat berguna saat Kita ingin mengidentifikasi bagian dari kode Kita yang memakan waktu eksekusi yang signifikan, atau saat Kita mencari cara untuk meningkatkan kinerja program Anda.

Pertama kita import modul cProfile


Kedua kita buat kode yang mau kita yang mau kita identifikasi


disitu saya sudah membuat fungsi yang berisikan 2 query data stock_move_line dengan mencari id yang sama. yang membedakan hanya yang query 1 hanya diambil kolom picking_id,  move_id, company_id, dan product id sementara query 2 mengambil semua kolom yang ada di stock_move_line

Ketiga, setelah membuat fungsi yang mau kita identifikasi. sekarang kita tambahkan button untuk kita identifkasi kode diatas.


disitu saya menambahkan fungsi profile_your_function untuk mengidentifkasi fungsi dari test_query diatas.

Keterangan:

Global: Ini adalah namespace global yang berisi variabel-variabel dan fungsi-fungsi yang didefinisikan di luar dari fungsi mana pun dalam program Anda. Ini mencakup semua variabel dan fungsi yang dapat diakses dari mana pun dalam kode Anda.

Locals: Ini adalah namespace lokal yang berisi variabel-variabel dan fungsi-fungsi yang didefinisikan di dalam fungsi yang sedang dieksekusi saat ini. Ini mencakup semua variabel dan fungsi yang hanya dapat diakses di dalam fungsi saat ini.

Hasil:


Hasil diatas adalah dari query yang menampilkan semua kolom stock_move_line.
jadi fungsi query tersebut dijalankan atau meberikan outputnya dalam 0.010 seconds, dan memanggil fungsi lain sebanyak 107 kali.

sekarang kita bandingkan dengan yang hanya beberapa kolom


hasil berikut hanya menampilkan beberapa kolom, dan dijalankan atau menampilkan outputnya hanya dalam 0.004 second, dan hanya memanggil fungsi lain sebanyak 28 kali.

Jadi sangat jelas perbedaannya, jadi jika ingin query data atau yang lain bisa menggunakan cProfile untuk mengidentifikasi estimasi waktu fungsi yang dibuat.

Note :

  • ncalls: Jumlah panggilan fungsi.
  • totime: Total waktu yang dihabiskan dalam fungsi.
  • percall: Waktu rata-rata yang dihabiskan dalam satu panggilan fungsi.
  • cumtime: Total waktu akumulatif yang dihabiskan dalam fungsi dan fungsi yang dipanggil darinya.
  • function: Nama fungsi yang dipanggil




Integrasi Mekari Sign