Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: fastfloat/fast_float
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v8.2.5
Choose a base ref
...
head repository: fastfloat/fast_float
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v8.2.6
Choose a head ref
  • 12 commits
  • 15 files changed
  • 2 contributors

Commits on May 27, 2026

  1. Update README.md to remove and modify content

    Removed references to Redis and Valkey, and updated the description of the fast_float library.
    lemire authored May 27, 2026
    Configuration menu
    Copy the full SHA
    3644f51 View commit details
    Browse the repository at this point in the history
  2. new site

    lemire committed May 27, 2026
    Configuration menu
    Copy the full SHA
    baffc57 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    ee866c2 View commit details
    Browse the repository at this point in the history
  4. gh pages

    lemire committed May 27, 2026
    Configuration menu
    Copy the full SHA
    7790aa6 View commit details
    Browse the repository at this point in the history

Commits on Jun 1, 2026

  1. 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.
    fcostaoliveira committed Jun 1, 2026
    Configuration menu
    Copy the full SHA
    b64d014 View commit details
    Browse the repository at this point in the history
  2. 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.
    fcostaoliveira committed Jun 1, 2026
    Configuration menu
    Copy the full SHA
    7589a4f View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    b20c420 View commit details
    Browse the repository at this point in the history
  4. 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)
    lemire authored Jun 1, 2026
    Configuration menu
    Copy the full SHA
    0f682cd View commit details
    Browse the repository at this point in the history
  5. 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)
    lemire authored Jun 1, 2026
    Configuration menu
    Copy the full SHA
    ed86132 View commit details
    Browse the repository at this point in the history
  6. 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).
    fcostaoliveira committed Jun 1, 2026
    Configuration menu
    Copy the full SHA
    b642d92 View commit details
    Browse the repository at this point in the history
  7. Merge pull request #383 from redis-performance/pr/parallel-exhaustive

    Parallelize the exhaustive float32 sweeps across hardware threads (~75-88x)
    lemire authored Jun 1, 2026
    Configuration menu
    Copy the full SHA
    06f3e27 View commit details
    Browse the repository at this point in the history
  8. 8.2.6

    lemire committed Jun 1, 2026
    Configuration menu
    Copy the full SHA
    cfd12eb View commit details
    Browse the repository at this point in the history
Loading