每秒解析千兆字节的JSON解析器开源,秒杀一大波解析器!

2019 年 2 月 25 日

每秒解析千兆字节的JSON解析器开源,秒杀一大波解析器!

近日,GitHub 开源了一 JSON 解析器 simdjson,通过与其他常用解析器的对比实验,结果显示,simdjson 的解析速度达到 2.2GB/s,远远秒杀其他解析器,在下文中,我们将为大家详细介绍 simdjson。以下全文为 simdjson 在 GitHub 上的文档。

JSON 文档在互联网上无处不在,服务器花费大量时间来解析这些文档。我们希望在进行完全验证(包括字符编码)的同时尽可能使用常用的 SIMD 指令来加速 JSON 的解析。

一些性能结果

相比最先进的解析器(如 RapidJSON),我们可能使用四分之一或更少的指令,也只有 sajson 的一半。据我们所知,simdjson 是第一个在商用处理器上以每秒千兆字节速度运行的完全验证 JSON 解析器。

在 Skylake 处理器上,各种解析器解析 twitter.json 文件的速度(以 GB/s 为单位)如下所示。

基本要求

  • 通过 Visual Studio 2017 或更高版本支持 Linux、macOS 以及 Windows 等平台;

  • 带有 AVX2 的处理器;

  • 支持最近的 C++ 编译器(例如,GNU GCC 或 LLVM CLANG 或 Visual Studio 2017),我们假设是 C++ 17,GNU GCC 7 或更高版本,或者 LLVM 的 clang 6 或更高版本;

  • 提供一些基准测试脚本,可以是 bash 和其他常用的实用命令程序,但是是可选的。

原文链接:【 https://www.infoq.cn/article/U5UMbHYrzYW3_0GmMIIc 】。未经作者许可,禁止转载。

登录后可解锁全站优质内容

免费畅享技术公开课、顶尖技术团队访谈、一线互联网大厂技术实践

文章
视频
电子书
研究报告
立即登录
2019 年 2 月 25 日 08:00 21913
用户头像

发布了 5 篇内容,共 3491650 次阅读,收获喜欢 1754 次。

关注

评论 3 条评论

发布
用户头像
粗略看了一下,simdjson在读取和内存分配方面做了不少的优化,
这适用于大量读取和批量转换。
跟文中作对比的几个json解析器,不在一个场景里面。

其他json解析只做串的解析,没有文件的读IO,这么比很不公平
2019 年 03 月 04 日 09:31
回复
也是觉得这个对比的角度好像很单一
如果能够从json复杂程度方面
数据量方面
实现的语言方面
多角度对比
会更有说服力
2019 年 03 月 04 日 14:44
回复
用户头像
真的能秒杀么
2019 年 02 月 27 日 20:58
回复
没有更多评论了
发现更多内容

区块链技术与我们的生活将并存

CECBC区块链专委会

区块链 数字经济

端-边-云全面协同创新 英特尔携手百度共推产业智能化升级

intel001

牛批!清华毕业的Java大牛用一个坦克大战游戏项目来演示设计模式

Java成神之路

Java 学习 编程 程序员 设计模式

音乐创作者必备软件,轻松玩转原创

Geek_96964a

音乐制作 编曲 电音 作曲 乐团

架构师期末作业

傻傻的帅

两年Java工作经验涨到23K,这究竟是怎么做到的?

Java架构师迁哥

@所有人 Flink Forward Asia 2020 向您发出议题征集邀请!

Apache Flink

flink

数字货币合约跟单系统开发app,跟单系统搭建源码

WX13823153201

区块链交易系统开发,期货合约平台搭建

13823153121

阿里P9技术专家:Java程序员这些必备技能的进阶书籍一定要读一读

Java成神之路

Java 学习 程序员 面试

解Bug之路-记一次JVM堆外内存泄露Bug的查找

无毁的湖光

Linux JVM heap memory GC Linux Kenel

Mysql学习笔记:InnoDB索引结构浅析

马迪奥

MySQL 索引结构 innodb

区块链合约层是一种自动执行的数字协议

CECBC区块链专委会

区块链 智能合约

知识点总结

Acker飏

不懂 ZooKeeper?没关系,这一篇给你讲的明明白白

海星

所见即所得的用户增长技术背后是如何实现的

海豚调度

用户增长 大数据技术 大数据架构 用户增长技术 ad-hoc技术

区块链技术最重要价值所在

CECBC区块链专委会

区块链 数字经济 互联网革命

USDT跑分承兑系统开发,区块链支付平台搭建

13823153121

云图说 | 华为云GPU共享型AI容器,让你用得起,用得好,用的放心

华为云开发者社区

gpu caffe

SpringBoot写后端接口,看这一篇就够了!

华为云开发者社区

后端 swagger pringboot

阿里P8大牛手写的源码笔记:Java集合+Java多线程+MyBatis+Spring

Java成神之路

Java spring 面试 多线程 mybatis源码

彻底理解JavaScript执行上下文

Walker

JavaScript 前端 this指针 函数执行

用Go-Guardian写一个Golang的可扩展的身份认证

朱亚光

go golang 微服务 身份认证

我敢说,这个版本的斗地主你肯定没玩过?

华为云开发者社区

命令行 游戏 斗地主

巧用决策树消灭if-else/switch

赫杰辉

决策树 可视化 简化代码

如何让知识图谱告诉你“故障根因”

华为云开发者社区

华为云 知识图谱 图谱

如何正确设置Java.home

谷鱼

滴滴基于 Flink 的实时数仓建设实践

Apache Flink

flink

设计模式只是一把锤子

博文视点Broadview

读书笔记 编程 面向对象 设计模式

拥抱K8S系列-07-部署K8S集群(Rancher)

张无忌

Kubernetes rancher

Mysql学习笔记:分库分表(sharding)

马迪奥

MySQL Sharding

每秒解析千兆字节的JSON解析器开源,秒杀一大波解析器!-InfoQ