Pengukuran waktu parSapply()
Menjalankan permainan dadu bersifat embarrassingly parallel. Jenis simulasi seperti ini biasanya (meski tidak selalu) menghasilkan peningkatan kecepatan yang baik. Seperti sebelumnya, kita dapat menggunakan microbenchmark() atau system.time(). Untuk kesederhanaan, kita akan menggunakan system.time() dalam latihan ini.
Latihan ini adalah bagian dari kursus
Menulis Kode R yang Efisien
Petunjuk latihan
Fungsi play() telah didefinisikan di ruang kerja Anda. Kita akan mengasumsikan bahwa kita ingin memainkan seratus ribu permainan.
- Atur
no_of_gameske1e5. - Gunakan
system.time()untuk mengukur waktu pemanggilanplay()berulang kali secara serial.- Panggil
sapply()dengan1:no_of_gamesdan fungsi pembungkusplay(). - Tetapkan hasilnya ke
serial. - Bungkus pemanggilan ini dalam
system.time()untuk mengukurnya.
- Panggil
- Buat objek cluster 4 inti dan ekspor fungsi
play()ke dalamnya. - Gunakan
system.time()untuk mengukur waktu pemanggilanplay()berulang kali secara paralel.- Sesuaikan kembali kode yang Anda gunakan untuk membuat
serial, tetapi buat agar berjalan secara paralel.
- Sesuaikan kembali kode yang Anda gunakan untuk membuat
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Set the number of games to play
no_of_games <- ___
# Time serial version
system.time(serial <- sapply(1:___, function(i) play()))
# Set up cluster
cl <- makeCluster(___)
clusterExport(cl, "play")
# Time parallel version
system.time(par <- ___)
# Stop cluster
stopCluster(cl)