Calcularea sumelor pe rânduri
Al doilea bottleneck identificat a fost calcularea sumelor pe rânduri.
total <- apply(d, 1, sum)
În exercițiul anterior ai schimbat obiectul de bază cu o matrice. Acest lucru face ca operația apply de mai sus să fie de trei ori mai rapidă.
Există însă o optimizare suplimentară pe care o poți aplica – înlocuiește apply() cu rowSums().
Acest exercițiu face parte din cursul
Scrierea codului R eficient
Instrucțiuni pentru exercițiu
- Completează funcția
r_sum()folosindrowSums(). - Folosește funcția
microbenchmark()pentru a compara timpii de execuție aiapp()șir_sum().
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Example data
rolls
# Define the previous solution
app <- function(x) {
apply(x, 1, sum)
}
# Define the new solution
r_sum <- function(x) {
___(x)
}
# Compare the methods
microbenchmark(
app_sol = app(rolls),
r_sum_sol = ___
)