8 votes

Pourquoi la vitesse des sources est-elle différente de celle du code en ligne de la console RStudio ?

J'ai un script avec des fonctions auto-écrites (pas de tracés). Lorsque je copie-colle ce script dans la console de R-Studio, il met des lustres à s'exécuter, mais lorsque j'utilise source("Helperfunctions.R") ça ne prend pas plus d'une seconde.

Question : D'où vient la différence de vitesse ?

Je suis conscient de deux différences entre l'exécution du code via l'option source() par rapport à la saisie du code sur la console R-Studio :

En ?source :

Comme les expressions ne sont pas exécutées au niveau supérieur, l'auto-impression n'est pas effectuée.

La façon dont je comprends ça : source() sera pas tracer des graphiques (à moins que cela ne soit spécifié avec par ex. print(plot) ), tandis que les codes de la console R Studio sera toujours tracer des graphiques. Je suis sûr que cela affectera la vitesse d'exécution jusqu'à un certain point, mais cela ne semble pas pertinent dans mon cas, car il n'y a pratiquement aucun appel de tracé.

Et :

(...) le fichier complet est analysé avant d'être exécuté.

J'ai travaillé avec R depuis un certain temps maintenant, mais je ne suis pas sûr que cela soit pertinent pour le problème de vitesse que je rencontre. Est-il possible que l'analyse complète de tout le code "avant qu'il ne soit exécuté" accélère l'exécution de mes fonctions d'aide script par un facteur de cent ?

Editar : J'utilise la version 3.2.3 de R.

5voto

KenHBS Points 3728

La question n'est pas source() par rapport au code de la ligne de console. Il s'agit plutôt de la façon dont RStudio envoie le code du volet source à la console.

Lorsque je copie le contenu de Helperfunctions.R et que je l'exécute dans RGui (au lieu de RStudio), le code s'exécute pratiquement à la même vitesse que lorsque j'utilise source("Helperfunctions.R") dans RStudio.

Apparemment, les lignes de code nécessitent toujours ( ?) plus de temps d'exécution dans RStudio que dans RGui. Même si vous ne remarquez généralement pas la différence de temps lors de l'exécution de quelques lignes dans la console, elle semble faire une énorme différence lorsque, disons, 3 000 lignes de code sont exécutées en même temps dans la console de R Studio.

Je crois comprendre qu'en utilisant source("Helperfunctions.R") dans le panneau source de RStudio, le code n'est pas réellement envoyé à la console RStudio (ce qui aurait été lent), mais il est exécuté directement dans le fichier R la langue.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X