Comparaison côte-à-côte avec les outils de release de l'écosystème JavaScript, mesurée avec hyperfine sur le même matériel, les mêmes commits, les mêmes fixtures. Les chiffres se rafraîchissent
à chaque release FerrFlow.
Dernière mise à jour : 6 juin 2026 · ferrflow
v5.2.0 · binaire
8.0 Mo
Méthodologie
Hyperfine avec 3 runs de warmup et 10 runs mesurés par cellule (fixture × outil
× commande). Latence médiane reportée.
Peak RSS via /usr/bin/time -v sur un run additionnel.
Fixtures générées via
FerrLabs/Fixtures avec un historique de commits
conventionnels déterministe (aucune entrée flaky).
Toutes les commandes sont des dry-runs no-op :
ferrflow check, semantic-release --dry-run --no-ci,
changesets status, standard-version --dry-run, etc. On compare
donc le coût de planification, pas le coût IO de mutation.
Reproductible — pipeline complet sur
FerrLabs/Benchmarks ; résultats publiés
en artefacts à chaque push main et dans chaque release notes.
check
Fixture
ferrflow
Paquet unique
16 ms21.1 Mo
Monorepo · petit (5 paquets)
17 ms18.9 Mo
Monorepo · moyen (20 paquets)
60 ms19.0 Mo
Monorepo · grand (50 paquets)
1.06 s29.2 Mo
Monorepo · 50 paquets × 5k commits
525 ms25.1 Mo
Monorepo · 100 paquets × 1k commits
112 ms23.1 Mo
release --dry-run
Fixture
ferrflow
Paquet unique
16 ms21.1 Mo
Monorepo · petit (5 paquets)
17 ms19.2 Mo
Monorepo · moyen (20 paquets)
60 ms19.1 Mo
Monorepo · grand (50 paquets)
1.06 s29.0 Mo
Monorepo · 50 paquets × 5k commits
523 ms25.3 Mo
Monorepo · 100 paquets × 1k commits
113 ms23.1 Mo
tag
Fixture
ferrflow
Paquet unique
4 ms12.2 Mo
Monorepo · petit (5 paquets)
5 ms12.2 Mo
Monorepo · moyen (20 paquets)
14 ms12.3 Mo
Monorepo · grand (50 paquets)
220 ms18.3 Mo
Monorepo · 50 paquets × 5k commits
105 ms14.2 Mo
Monorepo · 100 paquets × 1k commits
26 ms12.3 Mo
validate
Fixture
ferrflow
Paquet unique
2 ms12.1 Mo
Monorepo · petit (5 paquets)
2 ms12.2 Mo
Monorepo · moyen (20 paquets)
3 ms12.1 Mo
Monorepo · grand (50 paquets)
4 ms12.3 Mo
Monorepo · 50 paquets × 5k commits
3 ms11.9 Mo
Monorepo · 100 paquets × 1k commits
3 ms12.2 Mo
version
Fixture
ferrflow
Paquet unique
2 ms12.1 Mo
Monorepo · petit (5 paquets)
2 ms12.1 Mo
Monorepo · moyen (20 paquets)
3 ms12.2 Mo
Monorepo · grand (50 paquets)
4 ms12.3 Mo
Monorepo · 50 paquets × 5k commits
3 ms11.9 Mo
Monorepo · 100 paquets × 1k commits
3 ms12.1 Mo
Empreinte d'installation
Taille sur disque après installation. release-please n'apparaît qu'ici —
son runtime ne peut pas être benché offline (il a besoin de l'API GitHub pour résoudre
la dernière release), donc l'empreinte est la seule comparaison équitable qu'on peut
publier.
Outil
npm install
Binaire natif
ferrflow
13.0 Mo
8.0 Mo
changesets
26.0 Mo
—
commit-and-tag-version
20.0 Mo
—
release-please
96.0 Mo
—
semantic-release
69.0 Mo
—
standard-version
21.0 Mo
—
Pourquoi FerrFlow produit des chiffres plus petits
Binaire natif. Pas de boot Node.js, pas de npm install, pas de découverte de
plugins. Un ferrflow check sur un monorepo de 50 paquets termine avant que node --version aurait fini de chauffer.
libgit2 in-process. Énumération des tags et walking des commits via libgit2
dans le même process. Les concurrents shell-out à git à chaque appel ; le coût
de spawn domine sur les historiques denses.
Un seul outil, pas un arbre de plugins. semantic-release charge une chaîne
d'analyseurs, générateurs de notes, publishers npm et writers de changelog — chacun avec son
coût de require(). Le pipeline FerrFlow tient dans une seule crate Rust.
Chiffres mis à jour à chaque release. Voir les
notes de la dernière release
pour la table complète avec delta de baseline.