Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

majordomus bench

Změří každý veřejný příkaz registru za studena i za tepla a porovná se základní hodnotou.

Změří každý veřejný příkaz registru za studena i za tepla a porovná se základní hodnotou.

  • generated-output-mutating
  • systém
  • --json

Cíle jsou veřejné příkazy registru; scénáře jsou fixtury příkazů, je-li sada přítomna. Běh je lokální důkaz; tracked baseline zapisuje jen --write-baseline a --check odmítne regresi přes prahy politiky, když se dva vzorky shodují; jeden vzorek nad prahem je varování k přeměření a každý nález jmenuje počet svých vzorků, runner a jeho load average.

Syntaxe

majordomus bench [<command>...] [--samples <n>] [--warmup <n>] [--cold-samples <n>] [--mode cold|warm|both] [--format text|json] [--no-save] [--list] [--check] [--write-baseline [--force]]

Životní cyklus

  1. Nastavit
  2. Začít
  3. Pracovat
  4. Ověřit
  5. Uzavřít
  6. Prozkoumat

Další příkazy v této fázi:doctor, watch, history, search, doctrine, version, knowledge, rules, archive.

Čte

  • share/commands.yaml
  • test/fixtures/commands/
  • .ai/repo/policy.yaml
  • .ai/repo/benchmarks/baseline.json

Zapisuje

  • .ai/local/benchmarks/
  • .ai/repo/benchmarks/baseline.json

Návratové kódy

Jen kódy, které tento příkaz může vrátit. Úplný kontrakt je na indexu příkazů.

  • 0 ok
  • 2 použití
  • 10 kontrakt nesplněn
  • 12 chybějící artefakt
  • 13 interní chyba
  • 15 odmítnuto

Výkon jako spustitelný důkaz

bench měří čas každého veřejného příkazu registru v jednorázovém repozitáři, za studena i za tepla, a zaznamenává rozdělení, ne průměr. Cíle jsou registr; nic zde nevede seznam.

Cíle, odvozené z registru

nainstalováno
ano

Pro tento repozitář platí

# A repository with Majordomus installed and projections generated, and one commit of work.
"$MJ" init >/dev/null
"$MJ" update >/dev/null
mkdir -p lib docs
echo a > lib/a
echo d > docs/d
git add . && git commit -qm base

Spustit

$ majordomus bench --list

Výstup obsahuje

  • ^doctor +read-only
  • ^start +state-mutating

ukončení 0

Každý veřejný příkaz je cíl se svou třídou a scénářem, který se spustí; samotný harness je jediný veřejný příkaz, který cílem není.

Jeden cíl, jeden studený běh

nainstalováno
ano

Pro tento repozitář platí

# A repository with Majordomus installed and projections generated, and one commit of work.
"$MJ" init >/dev/null
"$MJ" update >/dev/null
mkdir -p lib docs
echo a > lib/a
echo d > docs/d
git add . && git commit -qm base

Spustit

$ majordomus bench version --samples 1 --warmup 0 --mode cold --no-save

Výstup obsahuje

  • ^version +cold +ok +1

ukončení 0

Příkaz jen pro čtení se jednou spustí za studena v připraveném repozitáři; řádek nese stav běhu a percentily jeho vzorků v milisekundách samotného podřízeného procesu.

Příkaz, který není v registru

nainstalováno
ano

Pro tento repozitář platí

# A repository with Majordomus installed and projections generated, and one commit of work.
"$MJ" init >/dev/null
"$MJ" update >/dev/null
mkdir -p lib docs
echo a > lib/a
echo d > docs/d
git add . && git commit -qm base

Spustit

$ majordomus bench nosuch

Výstup obsahuje

  • není veřejný příkaz registru

ukončení 12

Cíl je veřejný příkaz ze share/commands.yaml a nic jiného, takže jméno, které registr nenese, je chybějící artefakt, exit 12, s příkazem, který vypíše, co existuje.

Reference

Změří každý veřejný příkaz registru za studena i za tepla a porovná se základní hodnotou.

Cíle jsou veřejné příkazy share/commands.yaml a nic jiného: příkaz přidaný do registru je cílem od té chvíle a harness nikdy neměří sám sebe. Každý cíl běží v jednorázovém repozitáři. Je-li přítomna vlastní sada nástroje, scénářem je první scénář fixture příkazu pod test/fixtures/commands/, takže měří se to, co web předvádí a sada provádí; jinak je to holý příkaz v nainstalovaném repozitáři.

Příkaz jen pro čtení se spustí jednou za studena, poté benchmark.warmupkrát bez vzorkování a poté benchmark.sampleskrát za tepla, vše v jednom repozitáři. Příkaz, který mění stav, dostane pro každý vzorek čerstvý repozitář, takže každý jeho vzorek je za studena a nemá rozdělení za tepla. Vzorek je pouze doba běhu podřízeného procesu podle nástěnných hodin; příprava se do měření nikdy nezapočítává. Každé rozdělení se zaznamenává s počtem, minimem, p50, p90, p95, p99, maximem, průměrem a směrodatnou odchylkou; nic se nezprůměruje do ztracena.

  • bench změří každý cíl; bench <command>... jen ty.
  • --list vypíše cíle s jejich třídou a scénářem, --format json jako data.
  • --samples <n>, --warmup <n> přepíšou politiku jen pro tento běh; --mode cold|warm|both vybírá zaznamenané distribuce.
  • --format json vypíše běh jako jeden dokument se schématem majordomus/benchmark-result/v1: id běhu, commit a zda byl strom špinavý, platformu, profil a jeden výsledek na cíl a režim.
  • Každý běh se zapíše pod .ai/local/benchmarks/ (runs/<run-id>.json, latest.json, jeden řádek na běh v history.jsonl), pokud --no-save. To je lokální důkaz: ignorovaný gitem, nikdy základní hodnota.
  • --write-baseline zapíše běh pod .ai/repo/benchmarks/rust/ jako baseline.<platform>.json — jedna základní hodnota na platformu, protože doba porovnávaná mezi stroji porovnává stroje — se schématem majordomus/benchmark-baseline/v1 a vypíše stará a nová p50/p95/p99 pro každý cíl. Odmítne špinavý strom bez --force, protože základní hodnota zaznamenává commit.
  • --check porovná běh s baseline pod benchmark.regression: pro každý cíl a režim je p50, p95 nebo p99 o více než prahový zlomek nad baseline FAIL jmenující metriku, obě hodnoty a práh a příkaz skončí s 10. Bez baseline skončí s 12; baseline s jiným schématem není srovnatelná a skončí s 15.

MJ_TIMING=1 u jakéhokoli příkazu vypíše na stderr fáze a čítače práce daného běhu, čímž se pomalý cíl rozebere na části.

$ majordomus bench --list
command      class                      scenario
init         generated-output-mutating  fixture fresh
doctor       read-only                  fixture not-wired
...

$ majordomus bench doctor version
command      mode  status       n     p50     p95     p99     max  scenario
doctor       cold  ok           1    2711    2711    2711    2711  fixture not-wired
doctor       warm  ok          10    2640    2790    2790    2790  fixture not-wired
version      cold  ok           1      41      41      41      41  fixture prints
version      warm  ok          10      38      45      45      45  fixture prints

slowest by warm p95 (cold where warm does not apply):
  doctor       p95 2790 ms
  version      p95 45 ms

run b-20260905T031200Z-9f1c saved as .ai/local/benchmarks/runs/b-20260905T031200Z-9f1c.json

Kód 2 při chybě použití, 12 když pojmenovaný cíl není veřejný příkaz registru, 13 když cíl neproběhl čistě (jeho řádek říká setup-failed nebo návratový kód, který vytvořil), 10, 12 a 15 z --check jako výše.

Důkazy

Každý případ níže běží v CI na Linuxu i macOS. Web se odmítne sestavit, pokud veřejný příkaz nemá behaviorální případ, negativní případ nebo ukázku.

Prohledává názvy a popisy všech stránek, které tento web publikuje.