Jil*_*urp 3 java jackson json-simple
我在github上有一个json库https://github.com/jillesvangurp/jsonj
这个库有一个基于json simple的解析器,它使用一个处理程序类来完成我在库中创建JsonObject,JsonArray和JsonPrimitive实例的所有工作.
我见过人们发布各种基准测试表明,jackson解析器在性能方面和它一样好,而json simple是较慢的选项之一.因此,为了看看我是否可以提升性能,我创建了一个替代解析器,它使用jackson流API并调用我用于原始解析器的相同处理程序.从功能的角度来看,这很好用,非常简单.
你可以在这里找到相关的类(JsonHandler,JsonParser和JsonParserNg):https://github.com/jillesvangurp/jsonj/tree/master/src/main/java/com/github/jsonj/tools
但是,我没有看到我运行的各种测试有任何改进.
所以,我的问题是:我是否应该看到任何改进,如果是这样,为什么?在我看来,至少在流API模式下,两个库都具有相似的性能.
我对其他人对此的体验非常感兴趣.
Sta*_*Man 10
我刚才写了" 关于Java JSON处理的正确性能测试 ",列举了我在性能基准测试中遇到的常见问题.有很多相对简单的方法可以搞砸比较.我假设你没有提到任何错误,但值得一提.特别是关于使用原始输入的部分:很少有真正的JSON数据出现的情况String- 因此请确保使用InputStream/ OutputStream(或字节数组).
需要注意的第二件事是,如果您使用树模型(如JsonObject),您已经添加了许多可能可避免的开销:您正在构建使用POJO将使用的3x内存的Map/ List结构; 而且操作起来比较慢.在这种情况下,实际的解析/生成开销通常是少数组件.有时树样式处理是有意义的,这是可接受的开销.
因此,如果性能很重要,通常要么:
这两者都比构建树更快(在某种程度上,序列化).出于某种原因,许多开发人员以某种方式假设处理树表示是处理数据的有效方式 - 事实并非如此,并且在https://github.com/eishay/jvm-serializers等基准测试中可以看到
我没有通过链接看到与Jackson相关的代码,所以我假设它按预期工作.要寻找的主要内容(wrt performance probs)实际上是:
JsonParser和JsonGenerator(一些回收所需)和JsonFactory和/或ObjectMapper实例:它们是线程安全的,通过这些对象重用某些组件(符号表,序列化器).InputStream,OutputStream).| 归档时间: |
|
| 查看次数: |
9211 次 |
| 最近记录: |