Benchmarking z microbenchmark
Główną motywacją do korzystania z Rcpp jest wydajność, dlatego ważne jest dokładne mierzenie czasu wykonania kodu. W tym celu skorzystamy z funkcji microbenchmark() z pakietu microbenchmark.
microbenchmark() przyjmuje nazwane wyrażenia jako argumenty, wykonuje każde z nich określoną liczbę razy (domyślnie 100) w losowej kolejności i zwraca podstawowe statystyki podsumowujące. W tym kursie interesuje nas przede wszystkim kolumna median.
W twoim środowisku pracy dostępny jest wektor x złożony ze 100 000 liczb losowych o standardowym rozkładzie normalnym.
To ćwiczenie jest częścią kursu
Optymalizacja kodu R za pomocą Rcpp
Instrukcje do ćwiczenia
- Wczytaj pakiet
microbenchmark. - Napisz funkcję
sum_loop(), która oblicza sumę wszystkich elementów wektora za pomocą pętliforw R. - Zweryfikuj, czy otrzymujesz ten sam wynik co funkcja
sum(), używając funkcjiall.equal(). - Porównaj wydajność obu podejść za pomocą
microbenchmark().
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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))