Esses números medem o caminho crítico do engine Rust, parse, state-cache escritas, pipeline completo, todos em processo, todos com relógio monotônico. NÃO incluem round-trip de rede, latência WS de mercado ou tempo de fill do broker. O lag de rede por mercado é medido separadamente como recv_wall_ns − state_cache_updated_ns (recv menos state-updated). Leia o documento Latency Matrix para o detalhamento completo.
Histograma sobre MarketState::update_ticker_owned amostras de 89,033 (engine 0.4.48), nanossegundos, relógio monotônico em processo
As sete métricas da Latency Matrix (engine 0.4.48). State escritas na escala de nanossegundos; parse + end-to-end na escala de microssegundos. Tudo em processo. Nada disso é rede.
| métrica | n | p50 | p99 | nota |
|---|---|---|---|---|
state_ticker_ns | 89,033 | 310 ns | 1.95 µs | Write de state-cache de um único ticker. A menor unidade de trabalho do engine: preço, volume e timestamp de um símbolo comprometidos no market state. Este é o número principal de 310 ns. |
state_mark_price_ns | 120 | 2.15 µs | 3.73 µs | Write de estado do mark price. Levemente mais pesado que um escrita de ticker: o mark price carrega campos adicionais (funding rate, index price) para o estado. |
state_order_update_ns | 3,458 | 3.69 µs | 13.86 µs | Write de estado do ciclo de vida de uma ordem: nova, parcialmente preenchida, preenchida, cancelada. Cada transição de status toca o order map e o índice de ordens por símbolo. |
state_ob_snap_ns | 16,406 | 4.44 µs | 17.42 µs | Write de snapshot completo do orderbook. Substitui todo o ladder bid/ask de um símbolo em uma operação atômica. Mais pesado que um delta porque reescreve a profundidade completa. |
state_ob_delta_ns | 102,549 | 5.51 µs | 16.34 µs | Delta incremental do orderbook. Aplica a atualização de nível de preço de um lado ao ladder ao vivo. Mais barato que um snapshot; a maioria dos ticks são deltas. |
parse_ns | 176,555 | 1.76 µs | 77.95 µs | Parse completo de frame WS: decodificação JSON ou binária, roteamento de tipo de mensagem, lookup de símbolo. O engine faz parse de cada frame antes do state write. Este é o custo apenas de parse. |
end_to_end_ns | 176,555 | 14.40 µs | 248.96 µs | Pipeline end-to-end: parse + state write, o caminho crítico completo em processo do frame bruto ao market state atualizado. O número principal de 14,4 µs é este. |
O número principal de 310 ns é medido em um Intel Xeon 8369B fixado (plano A). Um p50 sub-microssegundo é a propriedade definidora do hardware de plano engine. Laptops limitados ou VMs compartilhadas podem ultrapassar 1 µs, o que reflete o hardware, não o engine.
| plano | hardware | configuração | p50 | p95 |
|---|---|---|---|---|
| A | Intel Xeon 8369B (Ice Lake-SP) | Linux 5.15, núcleo fixado, governor de desempenho, Rust 1.78 | 310 ns | 980 ns |
| B | AMD EPYC 7763 / Xeon Gold 6338 | Linux 5.15+, governor de desempenho, Rust 1.78 | 350–500 ns | 0.7–1.2 µs |
| C | Apple M2 / M3 MacBook | macOS 14+, arm64, Rust 1.78 | 250–450 ns | 0.6–1.1 µs |
| D | Laptop Intel i7-12700H / Ryzen 9 7945HX | Linux/Win11, sem fixação, Rust 1.78 | 400–650 ns | 0.8–1.4 µs |
O bench é um crate Rust autônomo. Não é necessário clonar a plataforma, sem serviços externos.
# 1. Clone the public OSS repo git clone https://github.com/melaya-labs/melaya.git cd melaya/benchmarks/engine # 2. Run the criterion bench (~100k iterations, ~30 seconds) cargo bench --bench state_ticker # 3. Read the per-iteration CSV + summary cat results/state_ticker_ns.csv | head cat results/summary.json
Tempo total de wall time: menos de 30 segundos em hardware plano A. O arnês criterion escreve results/state_ticker_ns.csv + results/summary.json. Metodologia completa no README do bench.