[all-commits] [llvm/llvm-project] 829842: [libc] refactor atof string parsing

michaelrj-google via All-commits all-commits at lists.llvm.org
Tue Nov 9 10:12:31 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 8298424cae9b4d3d41dbe17857dc9cb247d90786
      https://github.com/llvm/llvm-project/commit/8298424cae9b4d3d41dbe17857dc9cb247d90786
  Author: Michael Jones <michaelrj at google.com>
  Date:   2021-11-09 (Tue, 09 Nov 2021)

  Changed paths:
    M libc/src/__support/str_to_float.h
    M libc/test/src/stdlib/strtof_test.cpp

  Log Message:
  -----------
  [libc] refactor atof string parsing

Split the code for parsing hexadecimal floating point numbers from the
code for parsing the decimal floating point numbers so that the parsing
can be faster for both of them.

This decreases the time for the benchmark in release mode by about 15%,
which noticeably beats GLibc.

Old version: 2.299s
New version: 1.893s
GLibc: 2.133s

Tests run by running the following command 10 times for each version:
time ~/llvm-project/build/bin/libc_str_to_float_comparison_test ~/parse-number-fxx-test-data/data/*

the parse-number-fxx-test-data-repository is here:
https://github.com/nigeltao/parse-number-fxx-test-data/tree/fe94de252c691900982050c8e7c503d1efd1299a

It's important to build llvm-libc in Release mode for accurate
performance comparisons against glibc (set -DCMAKE_BUILD_TYPE=Release in
your cmake).
You also have to build the libc_str_to_float_comparison_test target.

Reviewed By: lntue

Differential Revision: https://reviews.llvm.org/D113036




More information about the All-commits mailing list