Bagi seorang programmer rasanya kurang lengkap memang jika kita tidak tahau apakah kode yang kita tulis pada sebuah program sudah efisien atau belum. Kususnya bagi anda pengguna bahasa pemrograman baik tingkat rendah maupun tingkat tinggi.
Disini saya hanya mencoba membandingkan kecepatan 2 blok kode dengan output yang sama namun ditulis dengan model ayng berbeda. Pada artikel kali ini saya menggunakan bahasa pemrograman Basic dengan memakai PowerBasic 9.01. Bagi anda yang belum mengenal PowerBasic mungkin ada baiknya saya berikan penjelasan sedikit tentang program ini.
PowerBasic adalah tool developer bahasa yang Basic yang mendukung Inline Assembler secara internal. Jika pada visual basic kita memakai add-in berupa ThunderVB namun dengan PowerBasic kita sudah dapat menulis OP Code dengan leluasa dan dapat menyatu dengan code basic yang kita tulis.
Kali ini saya akan membandingkan kecepatan model penulisan Artimatika yang ditulis dengan symbol-simbol operasi yang ada dibandingkan dengan artimatika dari ASM.
Berikut adalah script pertama (Aritmatika Biasa)
Local A As Dword
A=A+3
A=A+1
A=A*9
Output nilai A adalah 36
Berikut adalah script kedua (Aritmatika ASM)
Local A as Dword
! SUB EAX,EAX ; Null kan dulu (bisa juga pke ! XOR EAX, EAX)
! ADD EAX,3 ; EAX = EAX + 3
! INC EAX ; EAX = EAX + 1
! MOV EBX,9 ; EBX = 9
! MUL EBX ; EAX = EBX * EAX
! MOV A,EAX ; A = EAX
Output nilai A adalah 36 (Sama)
Kedua scrip diatas menghasilkan nilai output yang sama serta proses operasi yang sama, namun mari kita lihat data kecepatan eksekusi masing-masing blok dengan pemanggilan 5x.
Tabel Hasil Tes Kecepatan
Processor Tester : Dual Core E2144, 1.6 GH
|
Pemanggilan |
1 |
2 |
3 |
4 |
5 |
|
Artimatika Biasa |
280 cycle |
232 cycle |
96 cycle |
240 cycle |
240 cycle |
|
Aritmatika Asm |
64 cycle |
64 cycle |
64 cycle |
64 cycle |
64 cycle |
Dapat kita lihat dari tabel bahwa untuk mengeksekusi blok scrip aritmatika biasa, CPU membutuhkan ketukan lebih banyak dibanding ketika mengeksekusi blok artimatika dengan ASM. Bahkan ketukan untuk mengeksekusi blok aritmatika ASM menunjukan angka yang konstan selama 5x pemanggilan, artinya fungsi ASM lebih stabil dari pada fungsi yang dibandingkan pada artikel ini.
Jadi kode mana yang lebih baik buat anda? Terserah dari pribadi anda masing-masing.
Ringkas tapi lambat, atau rumit tapi cepat !! J
Kesimpulan :
Pada kode yang singkat mungkin perbedaan waktu eksekusi tidak begitu terlihat secara kasat mata, namun pada praktiknya suatu program punya pulhan ribu baris code tentunya kecepatan akan terasa jika kita memakai kode yang lebih efektif dalam bahasa pemrograman yang kita pakai.
NB :
Mohon maaf, data yang bisa saya dapat dari PowerBasic hanya banyaknya putaran yang dibutuhkan CPU untuk mengeksekusi suatu blok, dimana saya tidak bisa mengetahui waktu yang dibutuhkan CPU saya untuk melakukan 1 putaran (ketukan) sehingga dapat digunakan untuk mencari selisih waktu. Mungkin ada pembaca yang tahu cara merubah satuan CPU cycle menjadi mili second berdasarakan tipe prosesor saya.
|
Pemanggilan |
1 |
2 |
3 |
4 |
5 |
|
Artimatika Biasa |
280 cycle |
232 cycle |
96 cycle |
240 cycle |
240 cycle |
|
Aritmatika Asm |
64 cycle |
64 cycle |
64 cycle |
64 cycle |
64 cycle |
Komentar Terakhir