Benchmarken met microbenchmark
Omdat de belangrijkste reden voor het gebruik van Rcpp prestaties zijn, moet je nauwkeurig kunnen meten hoe lang je code erover doet om te draaien. Je gebruikt hiervoor de functie microbenchmark() uit het pakket microbenchmark.
microbenchmark() neemt benoemde expressies als argumenten, voert elke expressie een bepaald aantal keren uit (standaard 100) in willekeurige volgorde en geeft enkele samenvattende statistieken terug. In deze cursus kijken we alleen naar de kolom median.
Een vector x met 100.000 standaard-normaal verdeelde toevalsgetallen is beschikbaar in je werkruimte.
Deze oefening maakt deel uit van de cursus
R-code optimaliseren met Rcpp
Oefeninstructies
- Laad het pakket
microbenchmark. - Schrijf een functie
sum_loop()die de som van alle elementen in een vector berekent met een R-for-lus. - Controleer met de functie
all.equal()of je hetzelfde resultaat krijgt als met de functiesum(). - Vergelijk de prestaties met
microbenchmark().
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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))