Skip to content

Conversation

@dduan
Copy link
Owner

@dduan dduan commented Feb 6, 2026

Replace normalizeKey+fastKeyHash call pairs with a single normalizeKeyAndHash path in parser key creation/lookup flows.

For untransformed bare and single-quoted keys, compute key hash directly from source bytes while still materializing String for storage. Keep existing String-based hash path for transformed keys and double-quoted escape-decoded keys.

This removes repeated key re-hashing work in parseKeyValue/createKey* and fillTablePath hot paths without changing behavior.

Replace normalizeKey+fastKeyHash call pairs with a single normalizeKeyAndHash path in parser key creation/lookup flows.

For untransformed bare and single-quoted keys, compute key hash directly from source bytes while still materializing String for storage. Keep existing String-based hash path for transformed keys and double-quoted escape-decoded keys.

This removes repeated key re-hashing work in parseKeyValue/createKey* and fillTablePath hot paths without changing behavior.
@dduan dduan enabled auto-merge (squash) February 6, 2026 09:22
@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 57 57 58 58 60 74 124 7824
pull_request 57 57 58 58 60 71 100 7809
Δ 0 0 0 0 0 -3 -24 -15
Improvement % 0 0 0 0 0 4 19 -15

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

Retains * p0 p25 p50 p75 p90 p99 p100 Samples
main 605 605 605 606 606 606 606 7824
pull_request 605 605 605 605 605 605 605 7809
Δ 0 0 0 -1 -1 -1 -1 -15
Improvement % 0 0 0 0 0 0 0 -15

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 5138 5211 5239 5279 5351 6763 25938 10000
pull_request 5177 5267 5299 5347 5431 6319 16634 10000
Δ 39 56 60 68 80 -444 -9304 0
Improvement % -1 -1 -1 -1 -1 7 36 0

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

Retains * p0 p25 p50 p75 p90 p99 p100 Samples
main 13 14 14 14 14 14 14 10000
pull_request 13 14 14 14 14 14 14 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 256 256 256 257 257 257 257 4
pull_request 260 260 261 261 261 261 261 4
Δ 4 4 5 4 4 4 4 0
Improvement % -2 -2 -2 -2 -2 -2 -2 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 8571 8692 8774 8831 8872 9372 10401 113
pull_request 8583 8675 8733 8782 8839 9404 9725 114
Δ 12 -17 -41 -49 -33 32 -676 1
Improvement % 0 0 0 1 0 0 6 1

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

Retains (K) * p0 p25 p50 p75 p90 p99 p100 Samples
main 68 68 68 68 68 68 68 113
pull_request 68 68 68 68 68 68 68 114
Δ 0 0 0 0 0 0 0 1
Improvement % 0 0 0 0 0 0 0 1

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 154 154 155 156 157 157 157 7
pull_request 155 156 157 157 158 158 158 7
Δ 1 2 2 1 1 1 1 0
Improvement % -1 -1 -1 -1 -1 -1 -1 0

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

Retains (K) * p0 p25 p50 p75 p90 p99 p100 Samples
main 150 150 150 150 150 150 150 7
pull_request 150 150 150 150 150 150 150 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 15 16 16 16 16 17 17 63
pull_request 16 16 16 16 16 17 17 63
Δ 1 0 0 0 0 0 0 0
Improvement % -7 0 0 0 0 0 0 0

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

Retains * p0 p25 p50 p75 p90 p99 p100 Samples
main 133 134 134 134 134 134 134 63
pull_request 133 134 134 134 134 134 134 63
Δ 0 0 0 0 0 0 0 0
Improvement % 0 0 0 0 0 0 0 0

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 2585 2615 2626 2640 2656 2724 3479 372
pull_request 2617 2654 2669 2689 2726 2984 3713 364
Δ 32 39 43 49 70 260 234 -8
Improvement % -1 -1 -2 -2 -3 -10 -7 -8

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

Retains * p0 p25 p50 p75 p90 p99 p100 Samples
main 3138 3139 3139 3139 3139 3139 3139 372
pull_request 3138 3139 3139 3139 3139 3139 3139 364
Δ 0 0 0 0 0 0 0 -8
Improvement % 0 0 0 0 0 0 0 -8

@dduan dduan merged commit 1dc3ef8 into main Feb 6, 2026
16 checks passed
@dduan dduan deleted the dd/fuse-key-normalization-and-hashing branch February 6, 2026 09:31
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