当前位置: 首页 > 科技观察

啃论文社---一个C语言JSON解析库的BenchmarkEvaluation

时间:2023-03-15 15:17:50 科技观察

想了解更多开源,请访问:开源基础软件社区https://ost.51cto。com1。各种C语言JSON库的benchmark对比这是6年前的一个C语言JSON解析库的benchmark评测。由此可以直观的看出几十种C语言解析器的性能横向对比。https://github.com/miloyip/nativejson-benchmark该基准测试评估了41个具有JSON解析/生成功能的开源C/C++库的性能。性能评估标准包括速度、内存和代码大小。ParsingTime(解析时间)ParsingMemory(解析占用内存)StringifyTime(序列化时间)PrettifyTime(修改时间)CodeSize(代码大小)Winner—RapidJSON可以看到这个数据虽然是6年前的,但是还是比较在当时大多数JSON开源库中,RapidJSON在性能方面表现非常出色。2.每秒解析千兆字节的JSON解析库——simdJSON下图显示了使用GNUGCC10编译器在IntelSkylake处理器(3.4GHz)上解析各种文件的解析速度(以GB/s为单位)。从下图可以看出,无论simdjson解析小文件(300bytes)还是大文件(3MB),解析速度都能稳定在2.5GB/s,保持稳定的千兆文件解析速度。3、C语言最快的JSON解析库——YYJSONYYJSON是基于C语言开发的JSON解析库。它利用了现代CPU的一些特性来提高性能,在github库上也号称是C语言中最快的JSON。然而,我们在simdJSON中也看到,如果大多数JSON字段在编译时已知,simdjsonnew会更快。但是如果JSON字段在编译时是未知的,谁会死呢?下图显示了用于测试的10个不同大小和内容的JSON数据集。性能展示下面是yyjson与simdjson、rapidjson在这10个数据集的两种不同环境下的性能对比。可以直观的看出,YYJSON在解析速度和序列化速度上有着很大的优势。https://github.com/ibireme/yyjson。3.总结虽然rapidJSON在几年前曾经是最好的C/C++JSON库,但是近几年兴起的simdJSON和YYJSON显然有了质的突破。所以在编译时已知大部分JSON字段的情况下,最好的JSON库是simdJSON,否则YYJSON将是最好的选择。了解更多开源知识,请访问:开源基础软件社区https://ost.51cto.com。