在这篇文章中,我包括了我们的 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 可能是一个非常好的性能选择,尤其是在需要通过超低垃圾产生来实现一致的低延迟的情况下。