Kom igångKom igång gratis

Tidsmätning med parSapply()

Att köra tärningsspelet är embarrassingly parallel. Den här typen av simuleringar ger oftast (men inte alltid) en bra prestandaförbättring. Precis som tidigare kan vi använda microbenchmark() eller system.time(). För enkelhetens skull använder vi system.time() i den här övningen.

Den här övningen är en del av kursen

Effektiv R-kod

Visa kurs

Övningsinstruktioner

Funktionen play() är redan definierad i din miljö. Vi antar att vi vill spela hundra tusen spel.

  • Sätt no_of_games till 1e5.
  • Använd system.time() för att mäta tiden det tar att anropa play() upprepade gånger i serie.
    • Anropa sapply() med 1:no_of_games och wrapper-funktionen play().
    • Tilldela resultatet till serial.
    • Omge anropet med system.time() för att mäta tiden.
  • Skapa ett klusterobjekt med 4 kärnor och exportera funktionen play() till det.
  • Använd system.time() för att mäta tiden det tar att anropa play() upprepade gånger parallellt.
    • Utgå från koden du använde för att skapa serial, men anpassa den så att den körs parallellt.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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)
Redigera och kör kod