bytedance / bytedance/sonic-cpp

sonic-cpp的SIMD加速不一定比架构设计、算法优化和微观调优的性能高,可以和LJSON性能对比

Open
#119 2 comments 2 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
976
Forks
127
PR merge metrics
No merged PRs in 30d

Description

sonic-cpp解析和序列化干不赢yyjson,大概率也干不赢 [LJSON](https://github.com/lengjingzju/json) 的复用模式(模式3)

* LJSON使用复用模式生成可编辑DOM,**速度可比yyjson快约100%,内存占用只有yyjson的约50%**
* LJSON的文件流模式支持**真流式**解析和序列化(边读文件边解析,边序列化边写文件)
* LJSON使用C99,**没有使用手动SIMD等依赖具体CPU架构的优化**,Linux-GCC/CLANG 和 Windows-MSVC编译都能支持(最初还运行在平头哥的CSKY-ECOS上)

以下是 Intel i7-1260P& OS: Ubuntu 20.04 (VMWare) 测试结果(第一个测试1000x表示放大1000倍(测试1次), 第2个测试的参数1000表示重复测试1000次),LJSON复用模式解析达到了**2.5GB/s**的解析速度。

Image

![Image](https://github.com/user-attachments/assets/d52985e2-cb7d-478c-941e-f0cadd250cc4)

LJSON使用自研数值和字符串转换引擎

* 浮点 ↔ 字符串转换性能远超标准库算法和小超主流算法(sprintf、grisu2、dragonbox)
* float64精度设定为16位十进制数字,边界处理追求最短表示而非机械的偶数舍入

Image

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.