Profiling Odoo Code
Halo Arunatech Medium readers ✋🏻. Kali ini penulis ingin sharing mengenai profiling di Odoo. First and first, apakah profiling itu?
Mungkin bagi sebagian orang sudah familiar dengan istilah profiling di coding, tapi untuk pembaca yang belum familiar, sederhananya profiling merupakan salah satu proses yang perlu dilakukan ketika kita akan mengoptimasi sebuah code. Dengan menjalankan profiling ini, kita akan mengidentifikasi bagian mana dari kode kita yang menjadi sumber bottleneck nya, sehingga kita bisa membuat analisa dan improvement dari bagian kode yang menjadi bottleneck tersebut.
Profiling di Odoo
Odoo sendiri sudah menyediakan tools untuk profiling yang bisa kita gunakan, yaitu dengan menggunakan decorator profile
. Tools tambahan yang kita perlukan disini hanyalah snakeviz
. Nantinya snakeviz
akan berfungsi untuk membaca data profiling agar hasilnya bisa ditampilkan secara lebih interaktif. Untuk meng-install nya, bisa hanya dengan cara eksekusi perintah berikut di terminal :
pip install snakeviz # atau pip3
Membuat Data Profiling
Langkah Pertama
Untuk membuat data profiling, kita hanya memerlukan 3 langkah : Pertama, kita buat sebuah folder baru dahulu di root folder Odoo (dimana terdapat file odoo-bin) dengan nama “profiling”. Folder ini nantinya akan berfungsi untuk menampung hasil-hasil profiling kita kedepannya.
Langkah Kedua
Selanjutnya, lalu kita import decorator profile
nya menggunakan from odoo.tools.misc import profile
. Setelahnya, kita cari method yang akan kita profile. Setelahnya kita apply decorator profile ini dengan cara menaruh @profile(‘./profiling/profiling_result.prof’)
. Contohnya seperti berikut :
from odoo.tools.misc import profile
...
...
class SomeModel(models.Model):
...
@profile('./profiling/method_something_profile.prof')
def method_something(self):
blablabla
Langkah Ketiga
Setelah itu, restart Odoo agar perubahan kode nya ter-apply, dan coba eksekusi ulang method tersebut. Setelah dieksekusi, jika kita lihat di folder profiling , maka akan terbuat sebuah file baru sesuai dengan yang kita tuliskan di decorator profile
tadi. Selanjutnya, kita akan menggunakan snakeviz
untuk membaca hasil profiling nya.
Membaca Data Hasil Profiling
Untuk membaca data hasil profiling, pertama buka terminal baru. Lalu masuk ke dalam directory folder profiling. Lalu kita ketikkan di terminal perintah berikut :
snakeviz nama_file_profiling.prof
Setelahnya, browser kita akan membuka tab baru, dan hasil data profiling akan ditampilkan. Dari sini kita bisa lihat dari method yang kita profile tadi, seberapa lama dia memerlukan waktu untuk dieksekusi, method-method lain mana yang dipanggilnya selama eksekusi, dan seberapa banyak method-method tersebut dieksekusi. Contohnya sebagai berikut:
Beberapa istilah di snakeviz
yang akan sering ditemui :
- ncall : total berapa kali fungsi dipanggil
- tottime : total waktu fungsi dipanggil, tidak termasuk subfunction
- cumtime : total waktu fungsi dipanggil, termasuk subfunction
- percall : rata-rata waktu yang diperlukan fungsi per 1x panggilan
Dengan menganalisis hasil yang ditampilkan snakeviz
ini, kita akan dapat dengan mudah menemukan akar permasalahannya ketika suatu method memerlukan waktu yang sangat lama ketika dieksekusi. Dan dengan semakin cepat ditemukannya akar permasalahannya tersebut, maka kita akan bisa semakin cepat untuk mencoba untuk memecahkan solusinya.
Sekian dari artikel yang tidak begitu singkat ini mengenai profiling di Odoo. Semoga bermanfaat, dan happy optimizing.
Catatan penulis :
- Nama hasil profiling tidak harus menggunakan format
.prof
. Bisa menggunakan extensi lain, atau tidak berekstensi sama sekali.