在 IoT 应用程序中使用 JSON 的最佳库是什么?

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

在这篇文章中,我包括了我们的 JSON 解析器的性能。如果可以选择,出于多种原因我建议使用 YAML,但是如果您必须使用 JSON,性能比较如何?

消息

该消息很简单,但包含一些数据错别字。


 "price":1234,"longInt":1234567890,"smallInt":123,"flag":true,
"text":"Hello World!","side":"Sell"

实际消息中没有新行

表演

现在是编写和阅读消息的时候了。

这些计时以微秒(0.001 毫秒)为单位

有线格式 字节 99.9 %平铺 99.99 %平铺 99.999 %平铺 最差
JSONWire 100* 3.11 5.56 10.6 36.9
杰克逊 100 4.95 8.3 1,400 1,500
杰克逊+ C字节 100* 2.87 10.1 1,300 1,400
BSON 96 19.8 1,430 1,400 1,600
BSON + C 字节 96* 7.47 15.1 1,400 11,600
布恩杰森 100 20.7 32.5 11,000 69,000

“C-Bytes”是指使用 Chronicle Bytes 提供回收缓冲区。

“*”表示此数据是写入直接内存/从直接内存读取的,不需要额外复制才能与 NIO 一起使用。

代码与这篇 文章 和这篇 文章 相同,唯一不同的是使用了 JSONWire。

结论

JSONWire 可能是一个非常好的性能选择,尤其是在需要通过超低垃圾产生来实现一致的低延迟的情况下。

相关文章