J'ai travaillé sur quelques projets qui m'ont demandé de faire beaucoup de sous-ensembles de listes et en profilant du code j'ai réalisé que l'approche object[["nameHere"]] pour sous-ensembler des listes était généralement plus rapide que l'approche object$nameHere.
Par exemple, si nous créons une liste avec des composants nommés :
a.long.list <- as.list(rep(1:1000))
names(a.long.list) <- paste0("something",1:1000)
Pourquoi ça ?
system.time (
for (i in 1:10000) {
a.long.list[["something997"]]
}
)
user system elapsed
0.15 0.00 0.16
plus vite que ça :
system.time (
for (i in 1:10000) {
a.long.list$something997
}
)
user system elapsed
0.23 0.00 0.23
Ma question est simplement de savoir si ce comportement est vrai universellement et si je dois éviter le sous-ensemble $ dans la mesure du possible ou si le choix le plus efficace dépend d'autres facteurs ?