Mempercepat Eksekusi Kode

By | October 22, 2021
Print Friendly, PDF & Email
434 Views

— Mempercepat Eksekusi Kode – Apa yang kalian pikirkan dengan functional programming?? Tentu kemudahan dalam menulis kode tanpa perlu mikirin deklarasi tipe data variabel. Nggak perlu kasih baris perintah seperti titik koma (;) untuk mengakhiri statement. Bisa melihat langsung variabel tanpa perlu melakukan debugging. Kodenya lebih ramah terhadap para newbie. Functional Programming yang banyak digunakan saat ini seperti R, Matlab/Octave/Scilab, Python, Kotlin, Scala. Setiap bahasa tersebut tentunya mempunya feature tersendiri untuk mempercepat eksekusi kode.

Nah salah satu kekurangan pakai functional programming yaitu

  1. Sulitnya dibuat closed source, yup ini menjadi hal cukup krusial ketika sebuah project on progress dikasih ke klien sehingga kode/library yang kita buat bisa dilihat langsung padahal kita mau sembunyikan/closed source sampai final release. Bila menggunakan
    1. matlab bisa menggunakan PCode,
    2. kalau python menggunakan Obfuscator
    3. tapi untuk RStudio dan Octave belum ada feature tersebut. Tapi tenang dengan adanya develop berbasis web malah jadi lebih mudah lho! seperti RShiny dan Dash Python, tapi yaitukodenya jadi lumayan panjang dan tambah mikirin UI. Untuk tempat hostnya pun terbatas, RShiny dihosting di https://www.shinyapps.io sedangkan Python di https://www.heroku.com
  2. Lambat untuk eksekusi program apalagi kalau melibatkan operasi looping. Looping merupakan algoritma yang hampir disetiap algoritma itu ada. Kalau cuman looping sedikit tidak masalah, kalau banyak itu lho langsung deh jadi lambat. Oleh sebab itu beberapa developer bahasa tersebut mengenalkan vektorisasi untuk mempersingkat kode yang melibatkan looping. Misalkan bagi pengguna
    1. Octave/Matlab untuk memperbanyak dan duplikasi array menggunakan reshape dan repmat.
    2. Sedangkan untuk Python memanfaatkan Numpy untuk vektorisasi
    3. Khusus untuk R lebih hebat lagi yaitu pakai function collection seperti sapply, lapply, apply, tapply. Untuk urusan mempercepat eksekusi kode maka di R seringnya pakai 4 function diatas! Mengenai pembahasan diatas sudah pernah ditulis di https://softscients.com/2021/02/12/function-apply-lapply-sapply-tapply, tapi saya akan bahas lagi disini.
See also  Menangani Error pada Install Package di RStudio

Mempercepat Eksekusi Kode

Untuk Mempercepat Eksekusi Kode selain menggunakan teknik vektorisasi juga harus menggunakan feature yang ditawarkan oleh bahasa tersebut. Saya ambil contoh untuk mempercepat eksekusi kode pada pemrosesan text seperti mengubah kumpulan kata menjadi kata dasarnya. Default library katadasar https://github.com/nurandi/katadasaR  yaitu hanya bisa menerima 1 kata saja.

library(katadasaR)
katadasaR::katadasar('berjalan')

Kata dasar berjalan yaitu jalan

[1] "jalan"

Namun ketika ada kalimat berikut

kalimat = 'Monyet berjalan dan memakan buah'
katadasaR::katadasar(kalimat)

maka hasilnya tidak berubah, bila kalian mau menggunakan looping akan tampak seperti berikut dengan menggunakan library tm untuk mendapatkan token kata.

library(tm)
kata = tm::scan_tokenizer(kalimat)
for(k in kata){
    kata_dasar = katadasaR::katadasar(k)
    print(kata_dasar)
}

Hal diatas bagus-bagus saja, tapi kalau kalimat banyak dan panjang sekali, tentu hal diatas kurang efektif. Untuk mempercepat Mempercepat Eksekusi Kode di RStudio/R kalian bisa menggunakan function collection.

kata_dasar2 = unlist(lapply(kata, function(a){katadasar(a)}))
print(kata_dasar2)

Kita bandingkan hasilnya menggunakan tic-toc

tic()
for(k in kata){
    kata_dasar = katadasaR::katadasar(k)
    #print(kata_dasar)
}
toc()


tic()
kata_dasar2 = lapply(kata, function(a){katadasar(a)})
toc()

hasil Mempercepat Eksekusi Kode akan terasa perbedaannya yaitu

0.1 sec elapsed
> 
> 
> tic()
> kata_dasar2 = lapply(kata, function(a){katadasar(a)})
> toc()
0.04 sec elapsed
>

kode tanpa function collection butuh 0.1 detik sedangkan kode dengan teknik Mempercepat Eksekusi Kode yang telah kita terapkan hanya butuh 0.04 detik saja!

 

Leave a Reply

Your email address will not be published.




Enter Captcha Here :