Avatar for the HugoRCD user
HugoRCD
evlog
BlogDocsChangelog

perf(core): eliminate allocations in emit hot path

#185Merged
Comparing
perf/emit-hot-path
(
2f8061b
) with
main
(
609ad97
)
CodSpeed Performance Gauge
-50%
Improvement
6
Regression
8
Untouched
82

Benchmarks

96 total
status match
packages/evlog/bench/core/sampling.bench.ts::tail sampling (shouldKeep)
CodSpeed Performance Gauge
-50%
25.4 µs51.1 µs
no match (fast path)
packages/evlog/bench/core/sampling.bench.ts::tail sampling (shouldKeep)
CodSpeed Performance Gauge
-44%
25.6 µs45.4 µs
duration match
packages/evlog/bench/core/sampling.bench.ts::tail sampling (shouldKeep)
CodSpeed Performance Gauge
-43%
25.2 µs44.6 µs
path glob match
packages/evlog/bench/core/sampling.bench.ts::tail sampling (shouldKeep)
CodSpeed Performance Gauge
-43%
25.4 µs44.6 µs
push 1000 events (no flush)
packages/evlog/bench/core/client.bench.ts::pipeline — push throughput
CodSpeed Performance Gauge
-28%
1.8 ms2.6 ms
winston — 4 separate log calls
packages/evlog/bench/comparison/vs-alternatives.bench.ts::wide event lifecycle (evlog-native pattern)
CodSpeed Performance Gauge
-27%
431.6 µs592.1 µs
push 100 events (no flush)
packages/evlog/bench/core/client.bench.ts::pipeline — push throughput
CodSpeed Performance Gauge
-25%
424.2 µs563.9 µs
winston
packages/evlog/bench/comparison/vs-alternatives.bench.ts::deep nested log
CodSpeed Performance Gauge
-20%
452.6 µs565.5 µs
Firefox Linux
packages/evlog/bench/core/enrichers.bench.ts::createUserAgentEnricher
CodSpeed Performance Gauge
×2.5
219.3 µs87.5 µs
with traceparent
packages/evlog/bench/core/enrichers.bench.ts::createTraceContextEnricher
CodSpeed Performance Gauge
+40%
472.7 µs337.6 µs
emit minimal event
packages/evlog/bench/core/logger.bench.ts::log.emit()
CodSpeed Performance Gauge
+39%
132.5 µs95.6 µs
emit + JSON.stringify
packages/evlog/bench/core/format.bench.ts::JSON serialization (production mode)
CodSpeed Performance Gauge
+35%
144.5 µs107 µs
evlog
packages/evlog/bench/comparison/vs-alternatives.bench.ts::simple string log
CodSpeed Performance Gauge
+29%
149.1 µs115.2 µs
full emit with sampling (likely sampled out)
packages/evlog/bench/core/sampling.bench.ts::head + tail sampling combined
CodSpeed Performance Gauge
+17%
72 µs61.3 µs
evlog
packages/evlog/bench/comparison/vs-alternatives.bench.ts::burst — 100 sequential logs
CodSpeed Performance Gauge
+10%
917.2 µs837.3 µs
no sampling configured
packages/evlog/bench/core/sampling.bench.ts::head sampling
CodSpeed Performance Gauge
+9%
215.7 µs197.7 µs
with sampling rates
packages/evlog/bench/core/sampling.bench.ts::head sampling
CodSpeed Performance Gauge
+7%
130.3 µs121.6 µs
evlog
packages/evlog/bench/comparison/vs-alternatives.bench.ts::structured log (5 fields)
CodSpeed Performance Gauge
+6%
128.7 µs121 µs
small payload (2 fields)
packages/evlog/bench/core/logger.bench.ts::log.set() payload sizes
CodSpeed Performance Gauge
+5%
104.2 µs99 µs
evlog (createLogger + set + emit)
packages/evlog/bench/comparison/vs-alternatives.bench.ts::child / scoped logger
CodSpeed Performance Gauge
+5%
98.9 µs94.3 µs
evlog — accumulate + emit (1 event)
packages/evlog/bench/comparison/vs-alternatives.bench.ts::wide event lifecycle (evlog-native pattern)
CodSpeed Performance Gauge
+4%
160.1 µs153.4 µs
full emit with force-keep (tail sampling hit)
packages/evlog/bench/core/sampling.bench.ts::head + tail sampling combined
CodSpeed Performance Gauge
+4%
130 µs124.8 µs
emit + pretty print
packages/evlog/bench/core/format.bench.ts::pretty print (development mode)
CodSpeed Performance Gauge
+4%
124.6 µs119.7 µs
medium payload (50 fields)
packages/evlog/bench/core/logger.bench.ts::log.set() payload sizes
CodSpeed Performance Gauge
+3%
185.4 µs179.2 µs
full lifecycle (create + set + emit)
packages/evlog/bench/core/logger.bench.ts::log.emit()
CodSpeed Performance Gauge
+3%
168.4 µs163.4 µs

Commits

Click on a commit to change the comparison range
Base
main
609ad97
-50.38%
perf(core): eliminate allocations in emit hot path
2f8061b
24 days ago
by HugoRCD
© 2026 CodSpeed Technology
Home Terms Privacy Docs