Skip to content

Instantly share code, notes, and snippets.

@fredjoseph
Last active October 10, 2021 11:52
Show Gist options
  • Select an option

  • Save fredjoseph/d5db622360be57b1a73b5ab2bfebdaf1 to your computer and use it in GitHub Desktop.

Select an option

Save fredjoseph/d5db622360be57b1a73b5ab2bfebdaf1 to your computer and use it in GitHub Desktop.
VSCode - Performance

VS Code Performance

VS Code est un éditeur léger mais l'ajout de nombreuses extensions va affecter ses performances.

Voici quelques critères à vérifier avant d'installer une extension afin de s'assurer qu'elle est le meilleur choix.

  • La fonctionnalité est-elle disponible nativement dans VS Code
    Au fur et à mesure des versions, de nombreuses fonctionnalités sont intégrées nativement dans VS Code. Par conséquent, de nombreuses extensions (certaines utilisées par des millions d'utilisateurs) ne sont plus nécessaires (voir documentation).

  • Quand est-ce que l'extension est chargée ?
    Voir Activation Events

  • Les ressources sont-elles optimisées ?
    Pour cela, il faut vérifier le fichier package.json dans le code source pour voir si un bundler est utilisé (voir si il y a une étape de pré-build dans la section scripts). L'extension de fichier vsix est une archive compressée du code source. On y retrouve souvent des fichiers non nécessaire ce qui impacte la taille mais surtout le temps d'activation de l'extension (notamment le chargement à froid, mais également le chargement à chaud).

    ℹ️ Le temps d'activation à froid correspond au temps du premier lancement de l'extension après installation.

  • L'extension est-elle connue pour avoir des problèmes de performance
    Pour cela, il faut vérifier si des problèmes de performances sont remontés dans les issues du repository git de l'extension

  • L'extension est-elle activement maintenue ?
    Voir l'historique du repository git

Activation Events

Les évènements d'activation sont définis dans le fichier package.json de l'extension et définissent les conditions de chargement/déchargement de l'extension.

Diagramme de Séquence lors du chargement de VS Code ActivationEvent

Startup Event

L'évènement d'activation * activera l'extension au démarrage de VS Code. Une extension se déclenchant sur cet évènement impactera le temps de démarrage de VS Code.

La documentation donne le conseil suivant:
💡 To ensure a great end user experience, please use this activation event in your extension only when no other activation events combination works in your use-case.

onStartupFinished Event

L'extension sera activée après le démarrage de VS Code. C'est similaire à l'évènement *, mais ça ne ralentira le démarrage de VS Code.

onLanguage Event

L'extension sera activée sur l'ouverture d'un fichier dont le langage correspond à l'un des langages configurés.

"activationEvents": [
    "onLanguage:json",
    "onLanguage:markdown",
    "onLanguage:typescript"
]

workspaceContains Event

L'extension sera activée sur l'ouverture d'un dossier qui contient au moins 1 fichier correspondant au pattern configuré.

"activationEvents": [
    "workspaceContains:**/package.json"
]

onCommand Event

L'extension sera activée sur l'invocation d'une command.

"activationEvents": [
        "onCommand:vscode-docker.compose.down",
        "onCommand:vscode-docker.compose.restart",
        "onCommand:vscode-docker.compose.up"
]

Audit Performance

Extensions Stats

La commande Developer: Show Running Extensions permet d'obtenir des statistiques sur les extensions actuellement chargées. Les extensions sont triées de celle ayant le temps d'activation le plus long à celle avec le plus court.
L'indication Startup Activation indique que l'extension est chargée au démarrage.
Si une extension présente des problèmes de performance importants, cette indication sera également mentionnée sous le nom de l'extension.

⚠️ ne pas lancer cette commande juste après la 1ère activation d'une extension, car le temps indiqué sera le temps de chargement à froid et ne représentera pas le temps de chargement nominal de l'extension.

Startup Performance

La commande Developer: Startup Performance permet d'auditer les performances du démarrage de VS Code. Cette commande va ouvrir un fichier un fichier avec des stats détaillées sur différentes parties system info, performance marks, extension activation stats, loader stats for modules...

⚠️ les résultats sont spécifiques au project chargé et aux fichiers ouverts lors de l'exécution de la commande.

La section Extension Activation Stats permet d'obtenir une vue plus détaillée des performances des extensions et peut être très utile pour voir sur quel Activation Event se déclenche une extension sans avoir besoin de vérifier le code source.

Tips

  • On peut désactiver une extension pour un workspace (projet). Ca permet de conserver l'extension installée mais qu'elle ne soit activée que dans le(s) projet(s) l'exploitant.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment