sonic-cpp的SIMD加速不一定比架构设计、算法优化和微观调优的性能高,可以和LJSON性能对比
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 25/100
- Issue 类型
- 功能
- 描述清晰度
- 需要澄清
- 活跃度
- 停滞
- 领域
- performance
调研方向
该 issue 没有列出 sonic-cpp 的文件、入口点或测试。首先检查报告中的基准测试条件,并将其与 LJSON 的复用模式和流式模式进行比较。完成标准是得出一个可复现且达成共识的比较结果,明确 sonic-cpp 是否需要进行特定的性能变更。
由索引模型根据 Issue 内容生成。
描述
sonic-cpp解析和序列化干不赢yyjson,大概率也干不赢 LJSON 的复用模式(模式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的解析速度。
LJSON使用自研数值和字符串转换引擎
- 浮点 ↔ 字符串转换性能远超标准库算法和小超主流算法(sprintf、grisu2、dragonbox)
- float64精度设定为16位十进制数字,边界处理追求最短表示而非机械的偶数舍入
- 主要语言
- C++
- 星标
- 977
- 派生
- 129
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
bytedance/sonic-cpp 的其他 Issue
-
难度 5/5 一周以上 新手友好度 30/100
-
难度 5/5 一周以上 新手友好度 1/100
-
对 parseImpl 进行优化未关闭
难度 3/5 1-2 天 新手友好度 45/100
-
难度 4/5 3-5 天 新手友好度 25/100
-
U64toa 单元测试用例不通过未关闭
难度 3/5 1-2 天 新手友好度 55/100
查看 bytedance/sonic-cpp 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
? - Needs Triage bot_watch bug
难度 2/5 1-3 小时 新手友好度 68/100
NVIDIA/cudf-spark-jni#5267 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复
-
(S1 - Need confirmation)
难度 2/5 1-3 小时 新手友好度 62/100
CleverRaven/Cataclysm-DDA#88974 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
microsoft/onnxruntime#33215 ·
维护者通常 2 天内回复