ferrflowby ferrlabs

Benchmarks

À quel point FerrFlow est rapide ?

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 ms 21.1 Mo
Monorepo · petit (5 paquets) 17 ms 18.9 Mo
Monorepo · moyen (20 paquets) 60 ms 19.0 Mo
Monorepo · grand (50 paquets) 1.06 s 29.2 Mo
Monorepo · 50 paquets × 5k commits 525 ms 25.1 Mo
Monorepo · 100 paquets × 1k commits 112 ms 23.1 Mo

release --dry-run

Fixture ferrflow
Paquet unique 16 ms 21.1 Mo
Monorepo · petit (5 paquets) 17 ms 19.2 Mo
Monorepo · moyen (20 paquets) 60 ms 19.1 Mo
Monorepo · grand (50 paquets) 1.06 s 29.0 Mo
Monorepo · 50 paquets × 5k commits 523 ms 25.3 Mo
Monorepo · 100 paquets × 1k commits 113 ms 23.1 Mo

tag

Fixture ferrflow
Paquet unique 4 ms 12.2 Mo
Monorepo · petit (5 paquets) 5 ms 12.2 Mo
Monorepo · moyen (20 paquets) 14 ms 12.3 Mo
Monorepo · grand (50 paquets) 220 ms 18.3 Mo
Monorepo · 50 paquets × 5k commits 105 ms 14.2 Mo
Monorepo · 100 paquets × 1k commits 26 ms 12.3 Mo

validate

Fixture ferrflow
Paquet unique 2 ms 12.1 Mo
Monorepo · petit (5 paquets) 2 ms 12.2 Mo
Monorepo · moyen (20 paquets) 3 ms 12.1 Mo
Monorepo · grand (50 paquets) 4 ms 12.3 Mo
Monorepo · 50 paquets × 5k commits 3 ms 11.9 Mo
Monorepo · 100 paquets × 1k commits 3 ms 12.2 Mo

version

Fixture ferrflow
Paquet unique 2 ms 12.1 Mo
Monorepo · petit (5 paquets) 2 ms 12.1 Mo
Monorepo · moyen (20 paquets) 3 ms 12.2 Mo
Monorepo · grand (50 paquets) 4 ms 12.3 Mo
Monorepo · 50 paquets × 5k commits 3 ms 11.9 Mo
Monorepo · 100 paquets × 1k commits 3 ms 12.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.

№ 04 — Démarrer

Prêt à publier sans cérémonie ?

Open source. Tourne dans votre propre CI. Aucune donnée ne quitte votre infrastructure.