Mengukur Performa Macro VBA dengan Fungsi Timer

Ketika mengembangkan aplikasi menggunakan VBA Excel, performa macro menjadi salah satu aspek yang perlu diperhatikan. Macro yang memproses ribuan baris data, melakukan perulangan (loop), atau mengakses banyak worksheet biasanya membutuhkan waktu eksekusi yang lebih lama. Jika tidak dioptimalkan, hal tersebut dapat menyebabkan aplikasi terasa lambat dan mengurangi kenyamanan pengguna.

Untuk mengetahui seberapa cepat sebuah macro dijalankan, VBA menyediakan fungsi Timer. Fungsi ini memungkinkan Anda mengukur lama eksekusi suatu proses dengan tingkat akurasi hingga pecahan detik. Dengan demikian, Anda dapat mengidentifikasi bagian kode yang lambat dan melakukan optimasi agar aplikasi berjalan lebih efisien.

Mengenal Fungsi Timer

Fungsi Timer mengembalikan jumlah detik yang telah berlalu sejak pukul 00:00:00 (tengah malam) pada hari yang sama. Nilai yang dikembalikan bertipe Single, sehingga mampu menampilkan waktu dalam bentuk desimal.

Sintaks fungsi Timer sangat sederhana karena tidak memerlukan parameter.

Timer

Contoh penggunaan:

Sub ContohTimer()

    MsgBox Timer

End Sub

Jika macro dijalankan pada pukul 14:30:15, hasil yang ditampilkan dapat berupa angka seperti berikut.

52215.47

Angka tersebut menunjukkan jumlah detik yang telah berlalu sejak tengah malam. Nilai ini biasanya tidak digunakan secara langsung, melainkan dibandingkan dengan nilai Timer lainnya untuk mengetahui durasi suatu proses.

Mengukur Lama Eksekusi Macro

Penggunaan Timer yang paling umum adalah mengukur waktu yang dibutuhkan sebuah macro untuk menyelesaikan pekerjaannya.

Sub UkurEksekusi()

    Dim WaktuMulai As Single
    Dim WaktuSelesai As Single

    WaktuMulai = Timer

    'Kode yang akan diukur
    Application.Wait Now + TimeValue("00:00:03")

    WaktuSelesai = Timer

    MsgBox "Lama Eksekusi : " & _
           Format(WaktuSelesai - WaktuMulai, "0.000") & _
           " detik"

End Sub

Pada contoh di atas, macro sengaja diberi jeda selama tiga detik menggunakan Application.Wait. Setelah proses selesai, VBA menghitung selisih antara WaktuMulai dan WaktuSelesai, sehingga diperoleh lama eksekusi macro.

Teknik ini merupakan cara paling sederhana untuk mengetahui performa suatu proses dalam VBA.

Mengukur Performa Proses Perulangan

Loop merupakan salah satu penyebab macro berjalan lambat, terutama jika jumlah data yang diproses sangat besar. Dengan Timer, Anda dapat mengetahui berapa lama proses perulangan berlangsung.

Sub UjiLoop()

    Dim Awal As Single
    Dim i As Long

    Awal = Timer

    For i = 1 To 100000
        Cells(i, 1).Value = i
    Next i

    MsgBox "Waktu Eksekusi : " & _
           Format(Timer - Awal, "0.000") & " detik"

End Sub

Setelah mengetahui waktu eksekusinya, Anda dapat mencoba berbagai teknik optimasi, kemudian membandingkan hasilnya menggunakan Timer.

Membandingkan Dua Metode Pemrograman

Salah satu manfaat terbesar fungsi Timer adalah membandingkan performa beberapa metode penulisan kode.

Sebagai contoh, Anda ingin mengetahui metode mana yang lebih cepat antara menggunakan Select dan mengakses objek secara langsung.

Sheets("Data").Select
Range("A1").Value = "Contoh"

dibandingkan dengan:

Sheets("Data").Range("A1").Value = "Contoh"

Dengan mengukur waktu eksekusi masing-masing menggunakan Timer, Anda dapat menentukan metode yang paling efisien. Dalam banyak kasus, penggunaan objek secara langsung menghasilkan performa yang lebih baik karena VBA tidak perlu mengaktifkan worksheet terlebih dahulu.

Studi Kasus

Misalkan Anda memiliki macro untuk mengimpor data penjualan sebanyak 50.000 baris. Setelah beberapa kali digunakan, pengguna mengeluhkan bahwa proses impor terasa lambat.

Sebelum melakukan optimasi, Anda dapat mengukur lama proses menggunakan Timer.

Dim Awal As Single

Awal = Timer

'Proses impor data

MsgBox "Proses selesai dalam " & _
Format(Timer - Awal, "0.000") & " detik"

Setelah itu, Anda dapat mencoba beberapa teknik optimasi, seperti menonaktifkan ScreenUpdating, Calculation, atau EnableEvents selama proses berlangsung. Selanjutnya, jalankan kembali macro dan bandingkan hasil pengukurannya. Jika waktu eksekusi berkurang secara signifikan, berarti optimasi yang dilakukan berhasil meningkatkan performa aplikasi.

Hal yang Perlu Diperhatikan

Walaupun sangat praktis, fungsi Timer memiliki beberapa keterbatasan.

  • Nilai Timer akan kembali ke 0 setiap pergantian hari (pukul 00.00), sehingga kurang cocok untuk mengukur proses yang berlangsung sangat lama.

  • Hasil pengukuran dapat sedikit berbeda jika komputer sedang menjalankan banyak aplikasi lain yang menggunakan sumber daya prosesor.

  • Timer lebih cocok digunakan untuk mengukur proses yang berlangsung dalam hitungan milidetik hingga beberapa menit.

Untuk sebagian besar kebutuhan pengembangan macro VBA, keterbatasan tersebut tidak menjadi masalah karena proses biasanya selesai dalam waktu yang relatif singkat.

Kesimpulan

Fungsi Timer merupakan alat sederhana namun sangat efektif untuk mengukur performa macro VBA. Dengan membandingkan nilai Timer sebelum dan sesudah suatu proses dijalankan, Anda dapat mengetahui lama waktu eksekusi secara akurat hingga pecahan detik.

Informasi tersebut sangat berguna ketika melakukan optimasi kode, menguji beberapa metode pemrograman, maupun mengevaluasi performa aplikasi yang sedang dikembangkan. Semakin sering Anda memanfaatkan Timer selama proses pengembangan, semakin mudah menemukan bagian kode yang perlu diperbaiki sehingga macro dapat berjalan lebih cepat, efisien, dan responsif.

Hubungi Kami

Kantor Berkreasi
Alamat :
Pens Sky Venture - Sukolilo Surabaya
Karangrejo Tmur 17 Surabaya

Email : kantor.berkreasi@gmail.com
WA : wa.me/6287761589881  
(Support  Mbak Ana)

Tim Pengembang

Dr. Rojabi Azharghany, M.Si, S.Sos
Dr. H. Agus Sulthoni Imami, S.Psi. M.Pd.I.
Ali Ishaq, M.Pd.
Didik Rahwiniyanto, S.Si., M.Pd.
Mujiburrohman, M.Pd.
Mohammad Zikky, S.ST, M.T
Amien sawedi, S.Pd.
Didik P Wicaksono, M.Pd.