rapidyaml
fast_float
Our great sponsors
rapidyaml | fast_float | |
---|---|---|
13 | 15 | |
517 | 1,269 | |
- | 2.0% | |
5.7 | 8.7 | |
6 days ago | about 1 month ago | |
C++ | C++ | |
MIT License | 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.
rapidyaml
-
Faces.js, a JavaScript library for generating vector-based cartoon faces
Interesting, I hadn't come across extism before. How hard would it be to package https://github.com/biojppm/rapidyaml in this way? (And do you have a extism for dummies guide?)
-
A convenient C string API, friendly alongside classic C strings.
The inability, or brittleness, to embed NUL bytes into the string, for once. Zeroed bytes can be valid as an internal bytes of a longer encoded character. And the inefficiency of tempting every caller to rederive the string length on every use, leading to such bugs as quadratic parsing behavior with sscanf. The extra register for an explicit length is a very minute price to pay compared to that.
-
Funniest line of code you wrote while making a game?
Although you still have the other problem of sscanf, where read times can become quadratic.
-
yaml-cpp VS rapidyaml - a user suggested alternative
2 projects | 5 Feb 2022
- Since this is about json parsing and the tdarr json db can take ungodly times to load, maybe it's relevant?
- Parsing can become accidentally quadratic because of sscanf
-
"Expanded and Enhanced"
You are really simplifying that issue. A lot of it has to be how the implementation of sscanf works and it's super easy to abuse by complete accident when a lot of data needs to be read and parsed to correct values. See more here: https://github.com/biojppm/rapidyaml/issues/40
-
Accidentally quadratic: When Python is faster than C++
Leading to eye-rolling problems like these: https://github.com/biojppm/rapidyaml/issues/40
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.
What are some alternatives?
wasm3 - 🚀 A fast WebAssembly interpreter and the most universal WASM runtime
dragonbox - Reference implementation of Dragonbox in C++
json-c - https://github.com/json-c/json-c is the official code repository for json-c. See the wiki for release tarballs for download. API docs at http://json-c.github.io/json-c/
rapidobj - A fast, header-only, C++17 library for parsing Wavefront .obj files.
degasolv - Democratize dependency management.
C++ Format - A modern formatting library
Vrmac - Vrmac Graphics, a cross-platform graphics library for .NET. Supports 3D, 2D, and accelerated video playback. Works on Windows 10 and Raspberry Pi4.
fast-float-rust - Super-fast float parser in Rust (now part of Rust core)
JitFromScratch - Example project from my talks in the LLVM Social Berlin and C++ User Group
RapidJSON - A fast JSON parser/generator for C++ with both SAX/DOM style API
ctl - The C Template Library
earcut.hpp - Fast, header-only polygon triangulation