MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

Fungsi play() telah didefinisikan di ruang kerja Anda. Kita akan mengasumsikan bahwa kita ingin memainkan seratus ribu permainan.

  • Atur no_of_games ke 1e5.
  • Gunakan system.time() untuk mengukur waktu pemanggilan play() berulang kali secara serial.
    • Panggil sapply() dengan 1:no_of_games dan fungsi pembungkus play().
    • Tetapkan hasilnya ke serial.
    • Bungkus pemanggilan ini dalam system.time() untuk mengukurnya.
  • Buat objek cluster 4 inti dan ekspor fungsi play() ke dalamnya.
  • Gunakan system.time() untuk mengukur waktu pemanggilan play() berulang kali secara paralel.
    • Sesuaikan kembali kode yang Anda gunakan untuk membuat serial, tetapi buat agar berjalan secara paralel.

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)
Edit dan Jalankan Kode