写一个最快的 JSON Library

2020-10-21 11:41:39 +08:00
 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 了,大家可以先猜猜看为什么这么快~

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

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

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

https://www.v2ex.com/t/717021

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

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

© 2021 V2EX