Skip to content

Conversation

@dduan
Copy link
Owner

@dduan dduan commented Feb 6, 2026

Avoid re-normalizing and re-hashing keys when parseKeyValue and parseSelect already computed them. Add normalized-key entry points for key-table and key-array creation and route those hot paths through them.

Also reserve table/array backing storage on first append in walkTablePath and array-of-tables select paths to cut growth churn.

Avoid re-normalizing and re-hashing keys when parseKeyValue and parseSelect already computed them. Add normalized-key entry points for key-table and key-array creation and route those hot paths through them.

Also reserve table/array backing storage on first append in walkTablePath and array-of-tables select paths to cut growth churn.
@dduan dduan enabled auto-merge (squash) February 6, 2026 08:16
@github-actions
Copy link

github-actions bot commented Feb 6, 2026

Comparing results between 'main' and 'pull_request'

Host 'runnervmwffz4' with 4 'x86_64' processors with 15 GB memory, running:
#18~24.04.1-Ubuntu SMP Sat Jun 28 04:46:03 UTC 2025

TOMLDecoderBenchmarks

Decode toml.io example metrics

Time (wall clock): results within specified thresholds, fold down for details.

Time (wall clock) (μs) * p0 p25 p50 p75 p90 p99 p100 Samples
main 67 68 68 69 74 92 139 7188
pull_request 65 66 66 67 71 84 123 7292
Δ -2 -2 -2 -2 -3 -8 -16 104
Improvement % 3 3 3 3 4 9 12 104

Retains: results within specified thresholds, fold down for details.

Retains * p0 p25 p50 p75 p90 p99 p100 Samples
main 621 621 621 622 622 622 622 7188
pull_request 597 597 597 598 598 598 598 7292
Δ -24 -24 -24 -24 -24 -24 -24 104
Improvement % 4 4 4 4 4 4 4 104

Parse toml.io example metrics

Time (wall clock): results within specified thresholds, fold down for details.

Time (wall clock) (ns) * p0 p25 p50 p75 p90 p99 p100 Samples
main 5991 6103 6143 6195 6255 9431 30246 10000
pull_request 5760 5883 5923 5983 6063 7835 29104 10000
Δ -231 -220 -220 -212 -192 -1596 -1142 0
Improvement % 4 4 4 3 3 17 4 0

Retains: results within specified thresholds, fold down for details.

Retains * p0 p25 p50 p75 p90 p99 p100 Samples
main 5 6 6 6 6 6 6 10000
pull_request 5 6 6 6 6 6 6 10000
Δ 0 0 0 0 0 0 0 0
Improvement % 0 0 0 0 0 0 0 0

decode canada.toml metrics

Time (wall clock): results within specified thresholds, fold down for details.

Time (wall clock) (ms) * p0 p25 p50 p75 p90 p99 p100 Samples
main 270 270 270 271 272 272 272 4
pull_request 265 266 266 266 273 273 273 4
Δ -5 -4 -4 -5 1 1 1 0
Improvement % 2 1 1 2 0 0 0 0

Retains: results within specified thresholds, fold down for details.

Retains (K) * p0 p25 p50 p75 p90 p99 p100 Samples
main 1674 1674 1674 1674 1674 1674 1674 4
pull_request 1674 1674 1674 1674 1674 1674 1674 4
Δ 0 0 0 0 0 0 0 0
Improvement % 0 0 0 0 0 0 0 0

decode twitter.toml metrics

Time (wall clock): results within specified thresholds, fold down for details.

Time (wall clock) (μs) * p0 p25 p50 p75 p90 p99 p100 Samples
main 8821 8921 8937 8962 8995 9175 9432 111
pull_request 8883 8921 8937 8970 9019 9282 9373 111
Δ 62 0 0 8 24 107 -59 0
Improvement % -1 0 0 0 0 -1 1 0

Retains: results within specified thresholds, fold down for details.

Retains (K) * p0 p25 p50 p75 p90 p99 p100 Samples
main 66 66 66 66 66 66 66 111
pull_request 66 66 66 66 66 66 66 111
Δ 0 0 0 0 0 0 0 0
Improvement % 0 0 0 0 0 0 0 0

parse GitHub events archive metrics

Time (wall clock): results within specified thresholds, fold down for details.

Time (wall clock) (ms) * p0 p25 p50 p75 p90 p99 p100 Samples
main 162 162 163 171 172 172 172 7
pull_request 161 161 162 164 165 165 165 7
Δ -1 -1 -1 -7 -7 -7 -7 0
Improvement % 1 1 1 4 4 4 4 0

Retains: results within specified thresholds, fold down for details.

Retains (K) * p0 p25 p50 p75 p90 p99 p100 Samples
main 77 77 77 77 77 77 77 7
pull_request 77 77 77 77 77 77 77 7
Δ 0 0 0 0 0 0 0 0
Improvement % 0 0 0 0 0 0 0 0

parse canada.toml metrics

Time (wall clock): results within specified thresholds, fold down for details.

Time (wall clock) (ms) * p0 p25 p50 p75 p90 p99 p100 Samples
main 16 17 17 18 18 19 19 59
pull_request 17 17 18 18 19 19 19 57
Δ 1 0 1 0 1 0 0 -2
Improvement % -6 0 -6 0 -6 0 0 -2

Retains: results within specified thresholds, fold down for details.

Retains * p0 p25 p50 p75 p90 p99 p100 Samples
main 129 130 130 130 130 130 130 59
pull_request 129 130 130 130 130 130 130 57
Δ 0 0 0 0 0 0 0 -2
Improvement % 0 0 0 0 0 0 0 -2

parse twitter.toml metrics

Time (wall clock): results within specified thresholds, fold down for details.

Time (wall clock) (μs) * p0 p25 p50 p75 p90 p99 p100 Samples
main 2687 2722 2742 2757 2775 3006 3448 358
pull_request 2677 2720 2726 2736 2750 2877 3306 359
Δ -10 -2 -16 -21 -25 -129 -142 1
Improvement % 0 0 1 1 1 4 4 1

Retains: results within specified thresholds, fold down for details.

Retains * p0 p25 p50 p75 p90 p99 p100 Samples
main 1289 1290 1290 1290 1290 1290 1290 358
pull_request 1289 1290 1290 1290 1290 1290 1290 359
Δ 0 0 0 0 0 0 0 1
Improvement % 0 0 0 0 0 0 0 1

@dduan dduan merged commit fe3a2a3 into main Feb 6, 2026
16 checks passed
@dduan dduan deleted the dd/reuse-normalized-keys-in-table-creation branch February 6, 2026 08:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant