Skip to content
EN

Cópia estática

Copiado de docs/performance/baseline.md em https://github.com/poppy-team/aipo-lang (MIT). Fixado na revisão ce47c4e070404fc41722ccd8e2b7b808b99062a8, blob 10fb2ec9f10f024874755fa02f2a5acf5b0d8e91. O repositório de origem permanece canônico; esta cópia é atualizada por um pull request de sincronização, não em tempo real.

Baseline de Performance do Aipo ​

Status: registro (artefato gerado, não é um gate) Escopo: baselines de wall-clock para estágios do frontend, comandos, workloads da VM, o backend JS e a suíte cross-language separada Ambiente: Linux x86_64 (4 CPU, 5 GiB RAM), rustc 1.98.1, Node v24.18.0, --release, runner compartilhado (ruidoso — veja a coluna MAD) Registrado em: 2026-09-20, cargo run --release -p aipo-bench (7 amostras, mediana/MAD), git a8709881

Estes números são baselines para comparação futura em um runner dedicado, não limiares de aprovação/reprovação. Para o protocolo multi-runtime, as amostras brutas, os checksums e as regras de justiça, veja docs/performance/cross-language.md.

Estágios do frontend (mediana) ​

estágio858 B9 KiB99 KiB1023 KiB
bytecode/compile+verify34.12µs347.30µs3.91ms45.94ms
formatter/format50.16µs561.38µs9.55ms78.44ms
hir/lower24.52µs224.03µs4.18ms41.71ms
ir/lower19.97µs239.95µs4.27ms39.82ms
lexer/tokenize24.13µs275.36µs5.36ms58.56ms
sema/check14.65µs105.30µs2.43ms24.32ms
source/new1.90µs15.45µs179.48µs2.23ms
syntax/parse77.95µs861.32µs11.42ms102.74ms

Comandos e workloads da VM (mediana) ​

workloadentradamedianaMAD
cmd/check858 B188.04µs7.59µs
cmd/run858 B349.31µs6.43µs
cmd/build-emit858 B483.31µs4.75µs
cmd/fmt-check858 B94.61µs2.92µs
vm/int-arith43 B217.06µs1.62µs
vm/float-arith46 B206.48µs1.16µs
vm/call-overhead61 B223.84µs625ns
vm/recursion75 B13.79ms315.07µs
vm/closure-shared-var94 B274.68µs12.55µs
vm/global-lookup45 B218.07µs7.66µs
vm/list-build-iter74 B503.85µs33.07µs
vm/dict-insert-lookup78 B226.62µs2.02µs
vm/string-concat39 B477.75µs2.80µs
vm/interpolation43 B222.32µs2.16µs
vm/bytes-alloc49 B77.50µs611ns
vm/pipeline40 B142.71µs389ns
vm/failure-propagate112 B175.88µs180ns
vm/attempt68 B106.75µs262ns
vm/contracts71 B179.25µs1.07µs
vm/invariant-commit167 B212.84µs1.34µs

Backend JS (frontend + emit + spawn do node + execução) ​

workloadentradamedianaMAD
js/emit858 B288.64µs13.93µs
js/emit9 KiB4.00ms178.16µs
js/emit99 KiB57.60ms4.30ms
js/emit1023 KiB576.11ms16.64ms
js/hello17 B57.64ms5.16ms
js/integrated858 B72.06ms6.68ms

O spawn do processo Node domina os workloads pequenos (~50–70 ms no total). A medição cross-language separa Aipo VM in-process, Aipo CLI/VM e Aipo→JavaScript; comparações de steady-state ainda exigem runner dedicado.

Escalonamento (construção/iteração de list, inserção em dict, N=200..1600) ​

Todas as razões ficam próximas de 2× a cada dobra neste runner — comportamento linear; os veredictos reportam o ruído com honestidade. Razões brutas:

  • list-build: N=200..1600 ratios [1.73x, 2.17x, 1.66x] verdict=noisy — rerun on dedicated runner
  • list-iterate: N=200..1600 ratios [1.88x, 2.07x, 1.86x] verdict=noisy — rerun on dedicated runner
  • dict-insert: N=200..1600 ratios [1.75x, 1.87x, 2.02x] verdict=noisy — rerun on dedicated runner

Achado notável durante este gauntlet ​

O parsing de format-strings escalava 68× a cada 10× de entrada (medidos 23.4 ms para 400 f-strings em 8.4 KiB). Causa raiz: padding " ".repeat(offset) por placeholder mais rescans completos. Corrigido fazendo o parsing de slices sem padding e deslocando os spans de volta (crates/aipo-syntax/src/shift.rs, adendo do ADP-005): 1.77 ms depois, custo proporcional ao offset eliminado, snapshots do corpus idênticos byte a byte.