You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Abseil Team
dc6109e0c8
Implement Eisel-Lemire for from_chars<double>
Eisel-Lemire is a fast Atod algorithm, discussed at
https://nigeltao.github.io/blog/2020/eisel-lemire.html
Median of 5 runs of "time atod_manual_test pnftd/data/*.txt"
user 0m1.477s # Before
user 0m0.746s # After (a speed-up of 1.98x)
where pnftd is https://github.com/nigeltao/parse-number-fxx-test-data
"benchy --reference=srcfs --benchmark_filter='SimpleAtod' :numbers_benchmark"
output (which uses deterministic but randomly generated input strings):
name old cpu/op new cpu/op delta
BM_SimpleAtod<absl::string_view>/10/1 388ns ± 3% 330ns ± 2% -15.06% (p=0.000 n=49+44)
BM_SimpleAtod<absl::string_view>/10/2 428ns ± 3% 320ns ± 2% -25.07% (p=0.000 n=59+49)
BM_SimpleAtod<absl::string_view>/10/4 431ns ± 3% 353ns ± 4% -18.04% (p=0.000 n=59+48)
BM_SimpleAtod<absl::string_view>/10/8 512ns ± 3% 409ns ± 4% -20.18% (p=0.000 n=60+56)
BM_SimpleAtod<const char*>/10/1 411ns ± 4% 341ns ± 3% -17.15% (p=0.000 n=51+49)
BM_SimpleAtod<const char*>/10/2 431ns ± 3% 356ns ± 2% -17.44% (p=0.000 n=58+48)
BM_SimpleAtod<const char*>/10/4 437ns ± 3% 378ns ± 4% -13.49% (p=0.000 n=60+50)
BM_SimpleAtod<const char*>/10/8 552ns ± 2% 450ns ± 4% -18.43% (p=0.000 n=59+59)
BM_SimpleAtod<std::string>/10/1 404ns ± 2% 328ns ± 2% -18.78% (p=0.000 n=48+49)
BM_SimpleAtod<std::string>/10/2 438ns ± 3% 321ns ± 3% -26.81% (p=0.000 n=60+50)
BM_SimpleAtod<std::string>/10/4 446ns ± 2% 354ns ± 3% -20.66% (p=0.000 n=59+50)
BM_SimpleAtod<std::string>/10/8 519ns ± 2% 410ns ± 4% -21.07% (p=0.000 n=59+50)
sizeof(kPower10MantissaTable) doubles from 5208 to 10416 bytes.
PiperOrigin-RevId: 474174891
Change-Id: Iea6f6569419b6b55ab5978994f0adb1f4a8aafb2
|
2 years ago |
.. |
internal
|
Fixes bug so that `%v` with modifiers doesn't compile. `%v` is not intended to work with modifiers because the meaning of modifiers is type-dependent and `%v` is intended to be used in situations where the type is not important. Please continue using if `%s` if you require format modifiers.
|
2 years ago |
BUILD.bazel
|
Add more SimpleAtod / SimpleAtof test coverage
|
2 years ago |
CMakeLists.txt
|
Release absl::CordBuffer
|
3 years ago |
ascii.cc
|
Fix "unsafe narrowing" warnings in absl, 4/n.
|
2 years ago |
ascii.h
|
…
|
|
ascii_benchmark.cc
|
…
|
|
ascii_test.cc
|
Fix "unsafe narrowing" warnings in absl, 10/n.
|
2 years ago |
atod_manual_test.cc
|
Add more SimpleAtod / SimpleAtof test coverage
|
2 years ago |
charconv.cc
|
Implement Eisel-Lemire for from_chars<double>
|
2 years ago |
charconv.h
|
…
|
|
charconv_benchmark.cc
|
…
|
|
charconv_test.cc
|
…
|
|
cord.cc
|
Fix "unsafe narrowing" warnings in absl, 4/n.
|
2 years ago |
cord.h
|
Internal Cleanup: removing unused internal function declaration.
|
2 years ago |
cord_analysis.cc
|
…
|
|
cord_analysis.h
|
…
|
|
cord_buffer.cc
|
Fix C++17 constexpr storage deprecation warnings
|
3 years ago |
cord_buffer.h
|
Fix "unsafe narrowing" warnings in absl, 4/n.
|
2 years ago |
cord_buffer_test.cc
|
Release absl::CordBuffer
|
3 years ago |
cord_ring_reader_test.cc
|
…
|
|
cord_ring_test.cc
|
…
|
|
cord_test.cc
|
Add GetCustomAppendBuffer method to absl::Cord
|
2 years ago |
cord_test_helpers.h
|
…
|
|
cordz_test.cc
|
…
|
|
cordz_test_helpers.h
|
…
|
|
escaping.cc
|
Fix "unsafe narrowing" warnings in absl, 4/n.
|
2 years ago |
escaping.h
|
…
|
|
escaping_benchmark.cc
|
…
|
|
escaping_test.cc
|
…
|
|
match.cc
|
…
|
|
match.h
|
…
|
|
match_test.cc
|
…
|
|
numbers.cc
|
Fix "unsafe narrowing" warnings in absl, 4/n.
|
2 years ago |
numbers.h
|
…
|
|
numbers_benchmark.cc
|
…
|
|
numbers_test.cc
|
Implement Eisel-Lemire for from_chars<double>
|
2 years ago |
str_cat.cc
|
Fix "unsafe narrowing" warnings in absl, 4/n.
|
2 years ago |
str_cat.h
|
Use NullSafeStringView for const char* args to absl::StrCat, treating null pointers as ""
|
3 years ago |
str_cat_benchmark.cc
|
…
|
|
str_cat_test.cc
|
Use NullSafeStringView for const char* args to absl::StrCat, treating null pointers as ""
|
3 years ago |
str_format.h
|
Adds support for "%v" in absl::StrFormat and related functions for string-like types (support for other builtin types will follow in future changes). Rather than specifying %s for strings, users may specify %v and have the format specifier deduced. Notably, %v does not work for `const char*` because we cannot be certain if %s or %p was intended (nor can we be certain if the `const char*` was properly null-terminated). If you have a `const char*` you know is null-terminated and would like to work with %v, please wrap it in a `string_view` before using it.
|
2 years ago |
str_format_test.cc
|
Fixes bug so that `%v` with modifiers doesn't compile. `%v` is not intended to work with modifiers because the meaning of modifiers is type-dependent and `%v` is intended to be used in situations where the type is not important. Please continue using if `%s` if you require format modifiers.
|
2 years ago |
str_join.h
|
…
|
|
str_join_benchmark.cc
|
…
|
|
str_join_test.cc
|
…
|
|
str_replace.cc
|
…
|
|
str_replace.h
|
…
|
|
str_replace_benchmark.cc
|
…
|
|
str_replace_test.cc
|
…
|
|
str_split.cc
|
…
|
|
str_split.h
|
…
|
|
str_split_benchmark.cc
|
…
|
|
str_split_test.cc
|
…
|
|
string_view.cc
|
Fix "unsafe narrowing" warnings in absl, 4/n.
|
2 years ago |
string_view.h
|
string_view: conditional constexpr is no longer needed for C++14
|
2 years ago |
string_view_benchmark.cc
|
…
|
|
string_view_test.cc
|
Fix "unsafe narrowing" warnings in absl, 10/n.
|
2 years ago |
strip.h
|
Minor wording fix in the comment for ConsumeSuffix()
|
3 years ago |
strip_test.cc
|
…
|
|
substitute.cc
|
Fix "unsafe narrowing" warnings in absl, 4/n.
|
2 years ago |
substitute.h
|
Fix "unsafe narrowing" warnings in absl, 1/n.
|
2 years ago |
substitute_test.cc
|
…
|
|