啃论文俱乐部---一个C语言JSON解析库的基准评估

系统 OpenHarmony
该基准测试(benchmark)评估了41个具有JSON解析/生成功能的开源C/C++库的性能。性能评估标准包括速度、内存和代码大小 。

​想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

1、各种C语言JSON库的Benchmark比较

这是6年前的一个C语言JSON解析库的基准评估,我可以从这里面直观得看到数十种C语言解析器得性能
横向对比。
https://github.com/miloyip/nativejson-benchmark该基准测试(benchmark)评估了41个具有JSON解析/生成功能的开源C/C++库的性能。性能评估标准包括速度、内存和代码大小 。

Parsing Time(解析时间)

#打卡不停更#【FFH】啃论文俱乐部---世界上最快的C语言JSON库-开源基础软件社区

Parsing Memory(解析占用内存)

#打卡不停更#【FFH】啃论文俱乐部---世界上最快的C语言JSON库-开源基础软件社区

Stringify Time(序列化时间)

#打卡不停更#【FFH】啃论文俱乐部---世界上最快的C语言JSON库-开源基础软件社区

Prettify Time(修饰时间)

#打卡不停更#【FFH】啃论文俱乐部---世界上最快的C语言JSON库-开源基础软件社区

Code Size(代码大小)

#打卡不停更#【FFH】啃论文俱乐部---世界上最快的C语言JSON库-开源基础软件社区

Winner—RapidJSON

可以看到这份数据虽然是6年前的,但是依然把当时大多数JSON开源库进行了比较,其中从性能来看
RapidJSON 表现得非常优秀。

2、每秒解析千兆字节的JSON解析库—simdJSON

下图表示使用GNU GCC 10编译器在英特尔Skylake处理器(3.4 GHz)上解析各种文件的解析速度(以
GB/s为单位)。

#打卡不停更#【FFH】啃论文俱乐部---世界上最快的C语言JSON库-开源基础软件社区

下图可以看出simdjson不管解析小文件(300bytes)还是大文件(3MB),解析速度都能稳定在
2.5GB/s,保持稳定的千兆字节文件解析速度。

#打卡不停更#【FFH】啃论文俱乐部---世界上最快的C语言JSON库-开源基础软件社区

3、最快的C语言JSON解析库—YYJSON

YYJSON是一个基于C语言开发的JSON解析库,它利用了现代CPU的一些特点,从而将性能提高,并且在github上它也自称最快的C语言JSON库。

#打卡不停更#【FFH】啃论文俱乐部---世界上最快的C语言JSON库-开源基础软件社区

然而我们在simdJSON那也看到了,如果​大多数JSON字段在编译时都是已知​的,simdjson新的会更快。但是如果是​JSON字段在编译时未知的情况​,又会鹿死谁手呢?下图是用于测试的10个不同的大小和内容的JSON数据集。

#打卡不停更#【FFH】啃论文俱乐部---世界上最快的C语言JSON库-开源基础软件社区

性能展示

下面是关于 yyjson 用这个10个数据集在两个不同环境下与simdjson以及rapidjson的性能比较。

#打卡不停更#【FFH】啃论文俱乐部---世界上最快的C语言JSON库-开源基础软件社区
#打卡不停更#【FFH】啃论文俱乐部---世界上最快的C语言JSON库-开源基础软件社区
#打卡不停更#【FFH】啃论文俱乐部---世界上最快的C语言JSON库-开源基础软件社区
#打卡不停更#【FFH】啃论文俱乐部---世界上最快的C语言JSON库-开源基础软件社区

可以直观地看到 YYJSON 不管是解析速度还是序列化速度,都占有很大的优势。
​https://github.com/ibireme/yyjson。

3、总结

虽然数年以前 rapidJSON 一度作为最优秀的C/C++的JSON库,但是近年来涌现的simdJSON以及YYJSON显然有了质的突破。所以在大多数JSON字段在编译时都是已知的情况下,最佳的JSON库就是simdJSON,否则YYJSON会是最佳选择。

​想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com​​。

责任编辑:jianghua
相关推荐

2022-09-19 14:25:35

JSON压缩算法

2022-08-22 17:36:13

啃论文方法啃论文俱乐部

2022-09-06 15:46:52

speexdsp鸿蒙

2022-04-07 15:03:07

Harmony计算机鸿蒙

2022-04-20 20:37:58

鸿蒙操作系统

2022-10-18 16:14:28

2022-06-15 15:56:22

压缩算法神经网络

2022-03-28 15:09:17

无线传感器网络Harmony鸿蒙

2022-05-13 23:03:25

大数据Big Data巨量资料

2022-05-13 22:44:35

物联网算法鸿蒙

2022-06-27 14:01:31

LZ4 分析数据密集型压缩算法

2022-04-20 21:06:24

LZ 算法鸿蒙操作系统

2022-08-26 17:45:15

估计算法鸿蒙

2022-06-15 16:06:29

LZ4 算法硬件加速

2022-09-13 16:10:15

鸿蒙操作系统

2022-05-12 15:05:32

云计算数据压缩

2022-06-08 16:29:45

无损压缩方案分布式

2022-09-16 15:01:37

操作系统技术鸿蒙

2022-09-07 15:08:58

操作系统鸿蒙

2022-09-14 15:28:19

操作系统鸿蒙
点赞
收藏

51CTO技术栈公众号