Adaptadores de Ferramenta de Benchmark


Os adaptadores convertem a sa铆da da ferramenta de benchmark em JSON padronizado, no Formato de M茅trica do Bencher (BMF). Os adaptadores s茫o executados no servidor API quando um novo relat贸rio 茅 recebido. Veja a vis茫o geral do benchmarking para uma explica莽茫o mais aprofundada. Eles podem ser especificados no subcomando bencher run CLI com a flag opcional --adapter. Se nenhum adaptador estiver especificado, o adaptador magic 茅 usado por padr茫o.

脡 melhor usar o adaptador mais espec铆fico para o seu caso. Isso fornecer谩 uma an谩lise mais precisa e perform谩tica. Por exemplo, se voc锚 est谩 fazendo parse da sa铆da do libtest bench em Rust , voc锚 deve usar o adaptador rust_bench, e n茫o os adaptadores magic ou rust. Veja nossa p谩gina de desempenho do Bencher para uma boa compara莽茫o.

馃獎 Magic (padr茫o)

O Adaptador Magic (magic) 茅 um superconjunto de todos os outros adaptadores. Por esse motivo, 茅 o adaptador padr茫o para bencher run, mas 茅 melhor us谩-lo apenas para explora莽茫o. No CI, voc锚 deve usar o adaptador mais espec铆fico para o seu caso.

{鈥 JSON

O Adaptador JSON (json) espera um JSON no formato BMF. 脡 perfeito para integrar ferramentas de benchmark personalizadas com o Bencher.

Exemplo de BMF:

{
"benchmark_name": {
"latency": {
"value": 88.0,
"lower_value": 87.42,
"upper_value": 88.88
}
}
}

Neste exemplo, a chave benchmark_name seria o nome de um benchmark. Os nomes do benchmark podem ser qualquer string n茫o vazia de at茅 1024 caracteres. O objeto benchmark_name cont茅m slugs de Tipo de M茅trica ou UUIDs como chaves. Neste exemplo, latency 茅 o slug para o Tipo de M茅trica Lat锚ncia. Cada Projeto, por padr茫o, tem um Tipo de M茅trica Lat锚ncia (ou seja, latency) e Throughput (ou seja, throughput), que s茫o medidos em nanossegundo (ns) e opera莽玫es / segundo (ops/s) respectivamente. O objeto Tipo de M茅trica cont茅m uma M茅trica com at茅 tr锚s medidas: value, lower_value e upper_value. A lower_value e upper_value s茫o opcionais, e seu c谩lculo 茅 espec铆fico para a ferramenta de benchmark.

Neste exemplo, o objeto Tipo de M茅trica latency cont茅m as seguintes medidas:

  • Uma value de 88.0
  • Uma lower_value de 87.42
  • Uma upper_value de 88.88

Se o JSON BMF estiver armazenado em um arquivo, ent茫o voc锚 pode usar o subcomando bencher run CLI com o argumento opcional --file para especificar esse caminho do arquivo. Isso funciona tanto com um comando de benchmark (ex: bencher run "bencher mock > results.json" --file results.json) quanto sem um comando de benchmark (ex: bencher mock > results.json && bencher run --file results.json).

description: Benchmark Name
type: object
additionalProperties:
description: Measure Name, Slug, or UUID
type: object
properties:
value:
type: number
format: float
required: true
lower_value:
type: number
format: float
required: false
upper_value:
type: number
format: float
required: false

馃惏 Nota: O subcomando CLI bencher mock gera M茅tricas BMF falsas.

#锔忊儯 C#

O Adaptador C# (c_sharp) 茅 um superconjunto de c_sharp_dot_net.

#锔忊儯 C# DotNet

O Adaptador C# DotNet (c_sharp_dot_net) espera a sa铆da do BenchmarkDotNet no formato JSON (ou seja, --exporters json). A M茅trica de Tipo Lat锚ncia (ou seja, nanosecond (ns)) 茅 coletada.

Existem duas op莽玫es para a M茅trica:

  • mean (padr茫o): A lower_value e upper_value est茫o uma desvio padr茫o abaixo e acima da m茅dia (ou seja, value) respectivamente.
  • median: A lower_value e upper_value est茫o um intervalo interquartil abaixo e acima da mediana (ou seja, value) respectivamente.

Isso pode ser especificado no subcomando bencher run CLI com a flag opcional --average.

鉃 C++

O Adaptador C++ (cpp) 茅 um superconjunto de cpp_catch2 e cpp_google.

鉃 C++ Catch2

O Adaptador C++ Catch2 (cpp_catch2) espera a sa铆da do Catch2. O Tipo de M茅trica Lat锚ncia (ou seja, nanoseconds (ns)) 茅 coletado. A lower_value e upper_value est茫o um desvio padr茫o abaixo e acima da m茅dia (ou seja, value) respectivamente.

鉃 C++ Google

O Adaptador C++ Google (cpp_google) espera a sa铆da do Google Benchmark no formato JSON (ou seja, --benchmark_format=json). O Tipo de M茅trica Lat锚ncia (ou seja, nanoseconds (ns)) 茅 coletado. Apenas a m茅dia (ou seja, value) est谩 dispon铆vel. N茫o existem lower_value e upper_value.

馃暢 Go

O Adaptador Go (go) 茅 um superconjunto de go_bench.

馃暢 Go Bench

O Adaptador Go Bench (go_bench) espera a sa铆da do go test -bench. O Tipo de M茅trica Lat锚ncia (ou seja, nanoseconds (ns)) 茅 coletado. Apenas a m茅dia (ou seja, value) est谩 dispon铆vel. N茫o existem lower_value e upper_value.

鈽曪笍 Java

O Adaptador Java (java) 茅 um superconjunto de java_jmh.

鈽曪笍 Java JMH

O Adaptador Java JMH (java_jmh) espera a sa铆da do Java Microbenchmark Harness (JMH) no formato JSON (ou seja, -rf json). Os Tipos de M茅trica latency e throughput (ou seja, nanoseconds (ns) e operations / second (ops/sec)) podem ser coletados. A lower_value e upper_value s茫o os intervalos de confian莽a inferior e superior para a m茅dia (ou seja, value) respectivamente.

馃暩 JavaScript

O Adaptador JavaScript (js) 茅 um superconjunto de js_benchmark e js_time.

馃暩 JavaScript Benchmark

O Adaptador JavaScript Benchmark (js_benchmark) espera a sa铆da do Benchmark.js. O Tipo de M茅trica Throughput (ie operations / second (ops/sec)) 茅 coletado. A lower_value e upper_value s茫o a margem de erro relativo abaixo e acima da mediana (ou seja, value) respectivamente.

馃暩 JavaScript Time

O Adaptador JavaScript Time (js_time) espera a sa铆da do console.time/console.timeEnd. O Tipo de M茅trica Lat锚ncia (ou seja, nanoseconds (ns)) 茅 coletado. Apenas o tempo de opera莽茫o (ou seja, value) est谩 dispon铆vel. N茫o existem lower_value e upper_value.

馃悕 Python

O Adaptador Python (python) 茅 um superconjunto de python_asv e python_pytest.

馃悕 Python ASV

O Adaptador Python ASV (python_asv) espera a sa铆da da CLI airspeed velocity asv run. O Tipo de M茅trica Lat锚ncia (ou seja, nanoseconds (ns)) 茅 coletado. A lower_value e upper_value s茫o o intervalo interquartil abaixo e acima da mediana (ie value) respectivamente.

馃悕 Python Pytest

O Adaptador Python Pytest (python_pytest) espera a sa铆da do pytest-benchmark no formato JSON (ou seja, --benchmark-json results.json). Esta sa铆da JSON 茅 salva em um arquivo, portanto, voc锚 deve usar o argumento --file do CLI bencher run para especificar esse caminho do arquivo (ou seja, bencher run --file results.json "pipenv run pytest --benchmark-json results.json benchmarks.py"). O Tipo de M茅trica Lat锚ncia (ou seja, nanoseconds (ns)) 茅 coletado.

Existem duas op莽玫es para a M茅trica:

  • mean (default): A lower_value e upper_value est茫o uma desvio padr茫o abaixo e acima da m茅dia (ou seja, value) respectivamente.
  • median: A lower_value e upper_value est茫o um intervalo interquartil abaixo e acima da mediana (ou seja, value) respectivamente.

Isso pode ser especificado no subcomando bencher run CLI com a argumento opcional --average.

鈾︼笍 Ruby

O Adaptador Ruby (ruby) 茅 um superconjunto de ruby_benchmark.

鈾︼笍 Ruby Benchmark

O Adaptador Ruby Benchmark (ruby_benchmark) espera a sa铆da do m贸dulo Benchmark para os m茅todos #bm, #bmbm, e #benchmark. Um r贸tulo 茅 necess谩rio para cada benchmark. O Tipo de M茅trica Lat锚ncia (ou seja, nanoseconds (ns)) 茅 coletado. Apenas o valor informado (ou seja, value) est谩 dispon铆vel. N茫o existem lower_value e upper_value.

馃 Rust

O Adaptador Rust (rust) 茅 um superconjunto de rust_bench e rust_criterion.

馃 Rust Bench

O Adaptador Rust Bench (rust_bench) espera a sa铆da do libtest bench. O Tipo de M茅trica Lat锚ncia (ou seja, nanoseconds (ns)) 茅 coletado. A lower_value e upper_value s茫o o desvio abaixo e acima da mediana (ou seja, value) respectivamente.

馃 Rust Criterion

O Adaptador Rust Criterion (rust_criterion) espera a sa铆da do Criterion. O Tipo de M茅trica Lat锚ncia (ou seja, nanoseconds (ns)) 茅 coletado. A lower_value e upper_value s茫o os limites inferior e superior do gradiente (se dispon铆vel) ou da m茅dia (se n茫o) (ou seja, value) respectivamente.

馃 Rust Iai

O Adaptador Rust Iai (rust_iai) espera a sa铆da do Iai. Os Tipos de M茅trica instructions, l1_access, l2_access, ram_access, e estimated_cycles s茫o coletados. Apenas essas medidas (ou seja, value) est茫o dispon铆veis. N茫o existem medidas lower_value e upper_value. Os Tipos de M茅trica para este adaptador n茫o s茫o criados por padr茫o para todos os projetos. Entretanto, quando voc锚 usa este adaptador, esses Tipos de M茅trica ser茫o automaticamente criados para o seu Projeto.

馃 Rust Iai-Callgrind

O Adaptador Rust Iai (rust_iai_callgrind) espera a sa铆da do Iai-Callgrind. As Medidas instructions, l1_access, l2_access, ram_access, total_accesses e estimated_cycles s茫o coletadas. Apenas estas medidas (ou seja, value) est茫o dispon铆veis. N茫o existem medidas lower_value e upper_value. As Medidas para este adaptador n茫o s茫o criadas por padr茫o para todos os projetos. No entanto, quando voc锚 usa este adaptador, essas Medidas ser茫o automaticamente criadas para o seu Projeto.

鉂痏 Shell

O Adaptador Shell (shell) 茅 um superconjunto de shell_hyperfine.

鉂痏锔 Shell Hyperfine

O Adaptador Shell Hyperfine (shell_hyperfine) espera a sa铆da do Hyperfine no formato JSON (ou seja, --export-json results.json). Essa sa铆da JSON 茅 salva em um arquivo, portanto, voc锚 deve usar o argumento CLI do bencher run --file para especificar esse caminho de arquivo (ou seja, bencher run --file results.json "hyperfine --export-json results.json 'sleep 0.1'"). A m茅trica latency Kind (ou seja, nanoseconds (ns)) 茅 coletada.

Existem duas op莽玫es para a m茅trica:

  • mean (padr茫o): O lower_value e upper_value s茫o um desvio padr茫o abaixo e acima da m茅dia (ou seja, value) respectivamente.
  • median: O lower_value e upper_value s茫o os valores min e max respectivamente.

Isso pode ser especificado no subcomando CLI do bencher run com o sinalizador opcional --average.



馃惏 Parab茅ns! Voc锚 aprendeu tudo sobre adaptadores de ferramenta de benchmark! 馃帀


Continue: Limites & Alertas 鉃

馃 Este documento foi gerado automaticamente pelo OpenAI GPT-4. Pode n茫o ser preciso e pode conter erros. Se voc锚 encontrar algum erro, abra um problema no GitHub.


Published: Fri, October 27, 2023 at 8:40:00 AM UTC | Last Updated: Wed, March 27, 2024 at 7:50:00 AM UTC