Benchmarking con microbenchmark
Dato che la principale motivazione per usare Rcpp è la performance, devi saper misurare con precisione quanto tempo impiega il tuo codice a eseguire. A questo scopo userai la funzione microbenchmark() del pacchetto microbenchmark.
microbenchmark() accetta espressioni con nome come argomenti, esegue ciascuna espressione un certo numero di volte (100 per impostazione predefinita) in ordine casuale e restituisce alcune statistiche di riepilogo. In questo corso, ci interessa solo la colonna median.
Nel tuo workspace è disponibile un vettore x composto da 100.000 numeri casuali normali standard.
Questo esercizio fa parte del corso
Ottimizzare il codice R con Rcpp
Istruzioni dell'esercizio
- Carica il pacchetto
microbenchmark. - Scrivi una funzione
sum_loop()che calcoli la somma di tutti gli elementi di un vettore usando un cicloforin R. - Verifica di ottenere lo stesso risultato con la funzione
sum()utilizzando la funzioneall.equal(). - Confronta le prestazioni con
microbenchmark().
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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))