Profiling Odoo Code

Hersyanda Putra Adi
Arunatech
Published in
3 min readSep 25, 2023

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.

Contoh Hasil Profiling

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:

Hasil Profiling yang Ditampilkan oleh Snakeviz

Beberapa istilah di snakevizyang 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.

--

--

Hersyanda Putra Adi
Arunatech
0 Followers
Writer for

Software engineer on weekdays. Shutterbug, traveler and occasional mechanic on weekends.