Benchmarking dengan microbenchmark
Karena motivasi utama Rcpp adalah kinerja, Anda perlu dapat mengukur secara akurat berapa lama kode Anda berjalan. Anda akan menggunakan fungsi microbenchmark() dari paket microbenchmark untuk tujuan ini.
microbenchmark() menerima ekspresi bernama sebagai argumen, mengeksekusi setiap ekspresi sejumlah kali (100 secara bawaan) dalam urutan acak, dan mengembalikan beberapa statistik ringkasan. Dalam kursus ini, kita hanya memperhatikan kolom median.
Sebuah vektor x yang terdiri dari 100.000 bilangan acak normal baku tersedia di workspace Anda.
Latihan ini adalah bagian dari kursus
Mengoptimalkan Kode R dengan Rcpp
Petunjuk latihan
- Muat paket
microbenchmark. - Tulis fungsi
sum_loop()yang menghitung jumlah seluruh elemen dalam sebuah vektor menggunakan loopfordi R. - Verifikasi bahwa Anda mendapatkan hasil yang sama dengan fungsi
sum()menggunakan fungsiall.equal(). - Bandingkan kinerjanya dengan
microbenchmark().
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Load microbenchmark
___
# Define the function sum_loop
sum_loop <- function(x) {
result <- 0
___
result
}
# Check for equality
___(sum_loop(x), sum(x))
# Compare the performance
___(sum_loop = sum_loop(x), R_sum = sum(x))