performance-investigation

Enquêter sur les régressions de performance et trouver des opportunités d'optimisation

npx skills add https://github.com/sveltejs/svelte --skill performance-investigation

Quick start

  1. Start from a branch you want to measure (for example foo).
  2. Run:
pnpm bench:compare main foo

If you pass one branch, bench:compare automatically compares it to main.

Where outputs go

  • Summary report: benchmarking/compare/.results/report.txt
  • Raw benchmark numbers:
    • benchmarking/compare/.results/main.json
    • benchmarking/compare/.results/<your-branch>.json
  • CPU profiles (per benchmark, per branch):
    • benchmarking/compare/.profiles/main/*.cpuprofile
    • benchmarking/compare/.profiles/main/*.md
    • benchmarking/compare/.profiles/<your-branch>/*.cpuprofile
    • benchmarking/compare/.profiles/<your-branch>/*.md

The .md files are generated summaries of the CPU profile and are usually the fastest way to inspect hotspots.

Suggested investigation flow

  1. Open benchmarking/compare/.results/report.txt and identify largest regressions first.
  2. For each high-delta benchmark, compare:
    • benchmarking/compare/.profiles/main/<benchmark>.md
    • benchmarking/compare/.profiles/<branch>/<benchmark>.md
  3. Look for changes in self/inclusive hotspot share in runtime internals (runtime.js, reactivity/batch.js, reactivity/deriveds.js, reactivity/sources.js).
  4. Make one optimization change at a time, then re-run targeted benches before re-running full compare.

Fast benchmark loops

Run only selected reactivity benchmarks by substring:

pnpm bench kairo_mux kairo_deep kairo_broad kairo_triangle
pnpm bench repeated_deps sbench_create_signals mol_owned

Tests to run after perf changes

Runtime reactivity regressions are most likely in runes runtime tests:

pnpm test runtime-runes

Helpful script

For quick cpuprofile hotspot deltas between two branches:

node benchmarking/compare/profile-diff.mjs kairo_mux_owned main foo

This prints top function sample-share deltas for the selected benchmark.

Practical gotchas

  • bench:compare checks out branches while running. Avoid uncommitted changes (or stash them) so branch switching is safe.
  • Each bench:compare run rewrites benchmarking/compare/.results and benchmarking/compare/.profiles.

Plus de skills de sveltejs

performance-investigation
sveltejs
Enquêter sur les régressions de performance et trouver des opportunités d'optimisation
official
svelte-code-writer
sveltejs
Outils CLI pour la consultation de la documentation Svelte 5 et l'analyse de code avec correcteur automatique intégré. Trois commandes principales : list-sections pour parcourir la documentation disponible, get-documentation pour récupérer la documentation complète de sujets spécifiques, et svelte-autofixer pour analyser le code et suggérer des corrections. Le correcteur automatique prend en charge les ciblages Svelte 4 et 5 via le paramètre --svelte-version et le mode asynchrone via l'option --async. Accepte à la fois le code en ligne (avec des caractères $ échappés) et les chemins de fichiers pour l'analyse. Conçu pour être utilisé dans le...
official
svelte-core-bestpractices
sveltejs
Conseils pour écrire du code Svelte moderne, rapide et robuste. Chargez cette compétence lorsque vous êtes dans un projet Svelte et qu'on vous demande d'écrire, modifier ou analyser un composant Svelte ou…
official
svelte-code-writer
sveltejs
Outils CLI pour la consultation de la documentation Svelte 5 et l'analyse de code. DOIT être utilisé lors de la création, la modification ou l'analyse de tout composant Svelte (.svelte) ou Svelte…
official
svelte-core-bestpractices
sveltejs
Guidance on writing fast, robust, modern Svelte code. Load this skill whenever in a Svelte project and asked to write/edit or analyze a Svelte component or…
official
scenario-writer
sveltejs
Choisit un nouveau scénario à créer en fonction de la description de l'utilisateur, délègue la rédaction de celui-ci au sous-agent ai-scenario-writer et vérifie l'exactitude.
official
writing-opencode-plugins
sveltejs
Plugins OpenCode, @opencode-ai/plugin, @opencode-ai/plugin/tui, hooks de plugin, outils personnalisés, routes TUI, slots, keymaps et packaging. Utiliser lors de la création,…
official
scenario-writer
sveltejs
Sélectionne un nouveau scénario à créer basé sur la description de l'utilisateur, délègue sa rédaction au sous-agent ai-scenario-writer et vérifie l'exactitude.
official