A high-performance C++ JSON parser that uses SIMD instructions to parse gigabytes of JSON per second.
simdjson is a high-performance C++ library for parsing JSON documents at speeds of gigabytes per second. It uses SIMD instructions and microparallel algorithms to significantly outperform other JSON parsers while providing full JSON and UTF-8 validation. The library solves the performance bottleneck of JSON parsing in data-intensive applications and servers.
Developers and engineers working on performance-critical applications that process large volumes of JSON data, such as database systems, web servers, data pipelines, and real-time analytics platforms.
Developers choose simdjson for its unmatched parsing speed combined with strict validation, automatic CPU optimization, and easy integration. It offers a unique combination of performance, reliability, and simplicity that traditional JSON parsers cannot match.
Parsing gigabytes of JSON per second : used by Facebook/Meta Velox, the Node.js runtime, ClickHouse, WatermelonDB, Apache Doris, Milvus, StarRocks
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Parses JSON at gigabytes per second, 4x faster than RapidJSON and 25x faster than JSON for Modern C++, as shown in benchmarks with files from 300 bytes to 3MB.
Provides full JSON and UTF-8 validation without performance loss, ensuring data integrity for critical applications like databases and servers.
Dynamically selects the optimal parser implementation at runtime based on the host CPU, requiring zero configuration from the user.
Can be added to projects with just a single header and .cpp file, and offers well-documented APIs like the on-demand front-end for flexible parsing, as demonstrated in the Quick Start.
Requires modern compilers (g++ 7+ or clang++ 6+) and C++17, which can be a hurdle in environments with outdated toolchains, as noted in the prerequisites.
Designed for 64-bit systems and leverages SIMD instructions, so performance gains are limited on older or 32-bit hardware without these features, restricting its use in legacy embedded systems.
Achieving peak performance may require delving into advanced documentation and multithreading setups, as indicated in the Performance and parse_many sections, adding overhead for simple use cases.