-
Notifications
You must be signed in to change notification settings - Fork 189
Comparing changes
Open a pull request
base repository: fastfloat/fast_float
base: v8.2.5
head repository: fastfloat/fast_float
compare: v8.2.6
- 12 commits
- 15 files changed
- 2 contributors
Commits on May 27, 2026
-
Update README.md to remove and modify content
Removed references to Redis and Valkey, and updated the description of the fast_float library.
Configuration menu - View commit details
-
Copy full SHA for 3644f51 - Browse repository at this point
Copy the full SHA 3644f51View commit details -
Configuration menu - View commit details
-
Copy full SHA for baffc57 - Browse repository at this point
Copy the full SHA baffc57View commit details -
Configuration menu - View commit details
-
Copy full SHA for ee866c2 - Browse repository at this point
Copy the full SHA ee866c2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7790aa6 - Browse repository at this point
Copy the full SHA 7790aa6View commit details
Commits on Jun 1, 2026
-
Unroll the integer-part digit scan (straight-line for the common 1-5 …
…digit case) parse_number_string scans the integer part one byte at a time in a while loop, while the fraction already uses the 8-digit SWAR loop. Most integer parts are 1-5 digits, so the loop back-edge dominates. Peel the first five iterations into nested ifs, falling through to the original while for longer runs. Semantics are identical (i = 10*i + digit, advancing p); no behavior change. AWS m8g.metal-24xl (Graviton4), -O3 -march=native, simple_fastfloat_benchmark, from_chars->double. base vs patch measured back-to-back, mean of 2 runs: canada: gcc +3.1%, clang +2.8% mesh: gcc +5.4%, clang +5.1% random: ~flat (1-digit integer part) No regression; gcc and clang agree. Alternatives benchmarked and rejected: reusing loop_parse_if_eight_digits for the integer part regressed 5-8% (integer parts are too short for 8-digit SWAR setup); a counted for(k<5) loop matched on gcc but clang optimized it worse (canada -0.9%). The explicit peel is the only form solidly positive on both compilers.
Configuration menu - View commit details
-
Copy full SHA for b64d014 - Browse repository at this point
Copy the full SHA b64d014View commit details -
Add a 4-digit SWAR follow-up to loop_parse_if_eight_digits (clang)
After the 8-digit SWAR block loop, consume a remaining 4-7 digit run in one read4_to_u32 + parse_four_digits_unrolled step instead of byte-by-byte (reusing the existing 4-digit helpers). The parsed result is identical; this is purely a faster way to consume the same digits. Gated to clang: on gcc the extra 4-digit check regresses inputs whose remainder is < 4 digits (e.g. the 17-digit fraction of uniform [0,1] -> -3% on 'random'), because the check becomes pure overhead there; clang does not show that. m8g.metal-24xl (Graviton4), -O3 -march=native, simple_fastfloat_benchmark, from_chars->double, clang 18, base vs patch back-to-back (2 samples): canada.txt +11.7%, mesh.txt +7.4%, random ~flat. No regression.
Configuration menu - View commit details
-
Copy full SHA for 7589a4f - Browse repository at this point
Copy the full SHA 7589a4fView commit details -
Configuration menu - View commit details
-
Copy full SHA for b20c420 - Browse repository at this point
Copy the full SHA b20c420View commit details -
Merge pull request #381 from redis-performance/pr/integer-scan-unroll
Unroll the integer-part digit scan (straight-line for the common 1-5 digit case)
Configuration menu - View commit details
-
Copy full SHA for 0f682cd - Browse repository at this point
Copy the full SHA 0f682cdView commit details -
Merge pull request #382 from redis-performance/pr/four-digit-followup
Add a 4-digit SWAR follow-up to loop_parse_if_eight_digits (clang)
Configuration menu - View commit details
-
Copy full SHA for ed86132 - Browse repository at this point
Copy the full SHA ed86132View commit details -
tests: parallelize exhaustive32 and exhaustive32_64 sweeps too
Same std::thread split as exhaustive32_midpoint; preserves each test's existing failure behavior (abort for exhaustive32, stop-flag for exhaustive32_64).
Configuration menu - View commit details
-
Copy full SHA for b642d92 - Browse repository at this point
Copy the full SHA b642d92View commit details -
Merge pull request #383 from redis-performance/pr/parallel-exhaustive
Parallelize the exhaustive float32 sweeps across hardware threads (~75-88x)
Configuration menu - View commit details
-
Copy full SHA for 06f3e27 - Browse repository at this point
Copy the full SHA 06f3e27View commit details -
Configuration menu - View commit details
-
Copy full SHA for cfd12eb - Browse repository at this point
Copy the full SHA cfd12ebView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v8.2.5...v8.2.6