2352 shaares
1 result
tagged
performance
L'époque où les boucles for étaient lentes sous R est révolue. Les fonctions lapply et sapply font des boucles, en interne.
Par contre, redimensionner un objet (ajouter une colonne à une matrice) prend du temps parce qu'il faut à chaque fois réallouer la mémoire. Si on sait quelle taille finale l'objet doit faire, on gagne du temps à initialiser la matrice, puis à la remplir, plutôt que de faire du cbind à chaque fois.
Sinon, on peut utiliser une liste, car les éléments d'une liste ne sont pas localisés de façon contigüe dans la mémoire, donc pas besoin d'allouer toute la liste à chaque fois.
Essayer de viser la vectorisation au maximum. Gaffe, sapply/lapply ne sont pas des fonctions vectorisées : ce sont des boucles for cachées.
Par contre, redimensionner un objet (ajouter une colonne à une matrice) prend du temps parce qu'il faut à chaque fois réallouer la mémoire. Si on sait quelle taille finale l'objet doit faire, on gagne du temps à initialiser la matrice, puis à la remplir, plutôt que de faire du cbind à chaque fois.
Sinon, on peut utiliser une liste, car les éléments d'une liste ne sont pas localisés de façon contigüe dans la mémoire, donc pas besoin d'allouer toute la liste à chaque fois.
Essayer de viser la vectorisation au maximum. Gaffe, sapply/lapply ne sont pas des fonctions vectorisées : ce sont des boucles for cachées.