A: cara menggunakan paket microbenchmark untuk mengukur waktu eksekusi
Anda dapat menggunakan paket microbenchmark di R untuk membandingkan waktu eksekusi ekspresi yang berbeda.
Anda dapat menggunakan sintaks berikut untuk melakukan ini:
library (microbenchmark) #compare execution time of two different expressions microbenchmark( expression1, expression2) )
Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.
Contoh: Menggunakan microbenchmark() di R
Misalkan kita memiliki kerangka data berikut di R yang berisi informasi tentang poin yang dicetak oleh pemain di berbagai tim bola basket:
#make this example reproducible
set. seed ( 1 )
#create data frame
df <- data. frame (team=rep(c(' A ', ' B '), each= 500 ),
points=rnorm( 1000 , mean= 20 ))
#view data frame
head(df)
team points
1 A 19.37355
2 A 20.18364
3 A 19.16437
4 A 21.59528
5 A 20.32951
6 A 19.17953
Sekarang misalkan kita ingin menghitung rata-rata poin yang dicetak oleh pemain di setiap tim menggunakan dua metode berbeda:
- Metode 1 : Gunakan Agregat() dari Basis R
- Metode 2 : Gunakan group_by() dan summarise_at() dari dplyr
Kita dapat menggunakan fungsi microbenchmark() untuk mengukur waktu yang diperlukan untuk mengeksekusi setiap ekspresi berikut:
library (microbenchmark) library (dplyr) #time how long it takes to calculate mean value of points by team microbenchmark( aggregate(df$points, list(df$team), FUN=mean), df %>% group_by(team) %>% summarise_at(vars(points), list(name = mean)) ) Unit: milliseconds express aggregate(df$points, list(df$team), FUN = mean) df %>% group_by(team) %>% summarise_at(vars(points), list(name = mean)) min lq mean median uq max neval cld 1.307908 1.524078 1.852167 1.743568 2.093813 4.67408 100 a 6.788584 7.810932 9.946286 8.914692 10.239904 56.20928 100 b
Fungsi microbenchmark() menjalankan setiap ekspresi 100 kali dan mengukur metrik berikut:
- min : Waktu minimum yang diperlukan untuk eksekusi
- lq : kuartil terbawah (persentil ke-25) waktu yang diperlukan untuk menyelesaikannya
- Mean : Rata-rata waktu yang dibutuhkan untuk eksekusi
- median : Median waktu eksekusi
- uq : kuartil atas (persentil ke-75) dari waktu yang dibutuhkan untuk mengeksekusi
- max : Waktu maksimum yang diperlukan untuk eksekusi
- neval : Berapa kali setiap ekspresi dievaluasi
Biasanya, kami hanya melihat waktu rata-rata atau median yang diperlukan untuk mengeksekusi setiap ekspresi.
Dari hasilnya kita dapat melihat:
- Dibutuhkan waktu rata-rata 1,852 milidetik untuk menghitung rata-rata poin tim menggunakan metode berbasis R.
- Dibutuhkan waktu rata-rata 9,946 milidetik untuk menghitung rata-rata poin per tim menggunakan metode dplyr.
Berdasarkan hasil ini, kami menyimpulkan bahwa metode basis R jauh lebih cepat.
Kita juga dapat menggunakan fungsi boxplot() untuk memvisualisasikan distribusi waktu yang diperlukan untuk mengeksekusi setiap ekspresi:
library (microbenchmark) library (dplyr) #time how long it takes to calculate mean value of points by team results <- microbenchmark( aggregate(df$points, list(df$team), FUN=mean), df %>% group_by(team) %>% summarise_at(vars(points), list(name = mean)) ) #create boxplot to visualize results boxplot(results, names=c(' Base R ', ' dplyr '))
Dari box plot terlihat bahwa metode dplyr rata-rata membutuhkan waktu yang lebih lama untuk menghitung nilai rata-rata poin per tim.
Catatan : Dalam contoh ini, kami menggunakan fungsi microbenchmark() untuk membandingkan waktu eksekusi dua ekspresi berbeda, namun Anda dapat membandingkan ekspresi sebanyak yang Anda inginkan dalam praktiknya.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di R:
Cara membersihkan lingkungan di R
Cara menghapus semua plot di RStudio
Cara memuat banyak paket di R