写一个最快的 JSON Library

2020 年 10 月 21 日
 ibireme

之前也写过一些 JSON 解析,但感觉这类东西到处都有也没太大价值。 去年出现了 simdjson,使用 AVX2 和 NEON 来解析 JSON,号称是第一个达到 GB/s 的 JSON 解析库。 于是我就好奇在不使用 SIMD 的情况下 JSON 解析性能究竟能达到什么程度。

这个是我空闲时写的库,C89 、跨平台,对 JSON 可读可写,符合 RFC 标准: https://github.com/ibireme/yyjson

至于性能,在新一些的 x64 上通常比 simdjson 快一点,在旧 x64 和 arm64 上比 simdjson 快很多, 可以吹一下这是目前为止最快的 JSON Library 了,大家可以先猜猜看为什么这么快~

12086 次点击
所在节点    C
71 条回复
gugogo
2020 年 10 月 21 日
身体咋样啦
jzyff
2020 年 10 月 21 日
比 RapidJSON 快吗
felixin
2020 年 10 月 21 日
给大佬递茶🍵
fengjianxinghun
2020 年 10 月 21 日
大佬牛逼!
ytll21
2020 年 10 月 21 日
给大神点个赞
eudore
2020 年 10 月 21 日
大佬 6666666
fengjianxinghun
2020 年 10 月 21 日
编译器 128bit 支持?
编译器内建 clzll/BitScanReverse 这种?
ibireme
2020 年 10 月 21 日
@jzyff 读写都快 3-5 倍
ibireme
2020 年 10 月 21 日
@fengjianxinghun 编译器不支持就没用啊,而且只在处理长浮点数时能快一点,普通 JSON 根本用不到。
fwee
2020 年 10 月 21 日
为什么比 SIMD 还要快?
littlewing
2020 年 10 月 21 日
可以分享一下为什么这么快吗?
ibireme
2020 年 10 月 21 日
@fwee @littlewing
总之就是想办法充分利用 CPU 的指令级并行,优化分支预测、优化未对齐内存访问等等,
然后想办法让编译器生成更优的指令,以后有空可能会写点文章分享下。
myqoo
2020 年 10 月 21 日
要是能熟读 strlen, memcpy 等常用函数的内部实现细节,就可以充分利用硬件特性做优化。当年第一次看时被各种奇技淫巧震惊到。
beidounanxizi
2020 年 10 月 21 日
不相信,发一篇吹牛 PPT 看看呗 🐶
ryan0wang
2020 年 10 月 21 日
大佬牛逼
yazinnnn
2020 年 10 月 21 日
大佬牛逼!
neighbads
2020 年 10 月 21 日
蹲一个文章分享。。大佬 NB
nonduality
2020 年 10 月 21 日
大神能顺手 port 一个到 python 么?

ultrajason 在 Alpine Linux 下编译安装不方便,一直想找个高速的 json 库代替 python 内置的。
FH0
2020 年 10 月 21 日
star 了,c 语言难以企及的高度。想知道楼主做什么工作。
raaaaaar
2020 年 10 月 21 日

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/717021

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX