fast_float
fast-float-rust
Our great sponsors
fast_float | fast-float-rust | |
---|---|---|
15 | 10 | |
1,269 | 266 | |
2.0% | - | |
8.7 | 0.0 | |
about 1 month ago | over 1 year ago | |
C++ | Rust | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
fast_float
-
Parquet: More than just “Turbo CSV”
> Google put in significant engineering effort into "Ryu", a parsing library for double-precision floating point numbers: https://github.com/ulfjack/ryu
It's not a parsing library, but a printing one, i.e., double -> string. https://github.com/fastfloat/fast_float is a parsing library, i.e., string -> double, not by Google though, but was indeed motivated by parsing JSON fast https://lemire.me/blog/2020/03/10/fast-float-parsing-in-prac...
-
What do number conversions (from string) cost?
For those that don't know, gcc 12.x updated its float parsing logic to something similar to fast_float and it's about 1/6 of the cost presented here (sub 100 in the graph presented here). Strongly suggest using that library or upgrading the compiler if you need the performance.
-
Can sanitizers find the two bugs I wrote in C++?
This makes sense for integers but betware floating point from_chars - libc++ still doesn't implement it and libstdc++ implements it by wrapping locale-dependent libc functions which involves temporarily changing the thread locale and possibly memory allocation to make the passed string 0-terminated. IMO libstdc++'s checkbox "solution" is worse than not implementing it at all - user's are better off using Lemire's API-compatible fast_float implementation [0].
[0] https://github.com/fastfloat/fast_float
-
Passing Programs To A Stack Machine
I'm a bit stuck on how to do the same thing in c++, due to containers only having a single type. The very inefficient way I'm currently doing it is by passing a program as a vector of strings, and then converting the string constants to doubles with the fast_float library.
-
Parsing can become accidentally quadratic because of sscanf
Just above this comment is a merged PR, which references fast_float library: https://github.com/fastfloat/fast_float
-
Making Rust Float Parsing Fast: libcore Edition
Daniel Lemire @lemire (creator of the algorithm, author of the C++ implementation, and provided constant feedback to help guide the PR).
-
RapidObj v0.1 - A fast, header-only, C++17 library for parsing Wavefront .obj files.
And out of 6,000 lines in the file, at least 3000 are other people's code: earcut for polygon triangulation and fast_float because .obj files typically contain a lot of floating point numbers so it's important to parse them quickly.
-
First release of dragonbox, a fast float-to-string conversion algorithm, is available
How this compares to https://github.com/fastfloat/fast_float ?
-
Why is std::from_chars<float> slow?
I tried to compare it against Daniel Lemire's excellent fast_float library. Fast float took about 180ms for the same program, and all I did was change "std" namespace prefix to "fast_float". It's a factor of 12 difference, at least my machine. I tried MSVC next, and it is a lot better, but it is still ~4 times slower than fast float. AFAIK, clang currently does not implement the feature at all.
-
Iterator invalidation of std::string_view
If you don't mind a 3rd party lib until your stdlib updates, https://github.com/fastfloat/fast_float is best-in-class.
fast-float-rust
-
Good example of high performance Rust project without unsafe code?
I'd like the mention my own refactoring of fast-float-rust to remove nearly all unsafe code for merging into Rust core library which left the performance identical to the previous implementation.
- Exploring Rust performance on Graviton2 (AWS aarch64 CPUs)
-
Making Rust Float Parsing Fast: libcore Edition
JSON is an interesting example, since the syntax of valid floats is slightly different than what Rust expects. Luckily, I'm the author of a minimal, and am also the author of a PR to bring this to fast-float-rust.
-
Eisel-Lemire Algorithm
[4] https://github.com/aldanor/fast-float-rust/
-
Number Parsing at a Gigabyte per Second
It seems also dependent on the processor: https://github.com/aldanor/fast-float-rust/#intel-i7-4771
-
fast-float - a super-fast float parser in Rust
I've already done that (just pushed it - here).
What are some alternatives?
dragonbox - Reference implementation of Dragonbox in C++
rand - A Rust library for random number generation.
rapidobj - A fast, header-only, C++17 library for parsing Wavefront .obj files.
json - Strongly typed JSON library for Rust
C++ Format - A modern formatting library
rust - Rust for the xtensa architecture. Built in targets for the ESP32 and ESP8266
RapidJSON - A fast JSON parser/generator for C++ with both SAX/DOM style API
roxmltree - Represent an XML document as a read-only tree.
simdutf8 - SIMD-accelerated UTF-8 validation for Rust.
rust-lexical - Fast numeric to- and from-string conversion routines.
earcut.hpp - Fast, header-only polygon triangulation
rust - Empowering everyone to build reliable and efficient software.