Submit Search
Upload
Json解析库性能评测
•
Download as PPTX, PDF
•
0 likes
•
529 views
朋 王
Follow
jackson gson fastjson
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 13
Download now
Recommended
Android+bitmap优化
Android+bitmap优化
朋 王
Java 6中的线程优化真的有效么?
Java 6中的线程优化真的有效么?
wensheng wei
性能优化
性能优化
Lu Wei
面向开发的前端性能优化
面向开发的前端性能优化
li qiang
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲
ArBing Xie
Java常见问题排查
Java常见问题排查
ayanamist
Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇
bluedavy lin
Java常见问题排查
Java常见问题排查
bluedavy lin
Recommended
Android+bitmap优化
Android+bitmap优化
朋 王
Java 6中的线程优化真的有效么?
Java 6中的线程优化真的有效么?
wensheng wei
性能优化
性能优化
Lu Wei
面向开发的前端性能优化
面向开发的前端性能优化
li qiang
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲
ArBing Xie
Java常见问题排查
Java常见问题排查
ayanamist
Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇
bluedavy lin
Java常见问题排查
Java常见问题排查
bluedavy lin
有钱Android索引优化调研总结
有钱Android索引优化调研总结
朋 王
Android系统内存管理介绍(上)
Android系统内存管理介绍(上)
朋 王
Android线程简介
Android线程简介
朋 王
Android chromium web view
Android chromium web view
朋 王
introduce Okhttp
introduce Okhttp
朋 王
networking performance
networking performance
朋 王
More Related Content
More from 朋 王
有钱Android索引优化调研总结
有钱Android索引优化调研总结
朋 王
Android系统内存管理介绍(上)
Android系统内存管理介绍(上)
朋 王
Android线程简介
Android线程简介
朋 王
Android chromium web view
Android chromium web view
朋 王
introduce Okhttp
introduce Okhttp
朋 王
networking performance
networking performance
朋 王
More from 朋 王
(6)
有钱Android索引优化调研总结
有钱Android索引优化调研总结
Android系统内存管理介绍(上)
Android系统内存管理介绍(上)
Android线程简介
Android线程简介
Android chromium web view
Android chromium web view
introduce Okhttp
introduce Okhttp
networking performance
networking performance
Json解析库性能评测
1.
* Json解析库评测
2.
主要讲三个方面 1 对比jackson、gson、fastjson在jvm、dalvik、art虚拟机上的 性能 2 jackson、gson、fastjson介绍 3
jackson最佳实践
3.
benchmark http://lightai.github.io/2016/03/28/json-benchmark/
4.
Java虚拟benchmark的难点 1 jit优化、多层次优化 2 很难获取代码精确的执行时间,system.nanotime本身时间 开销很大 3
gc 不能很好的处理以上因素的影响,会导致测试结果不准确,甚 至得出错误的结论。
5.
讲一讲反射 反射性能低主要两个原因: 1 换取遍历field、method、annotation,执行field的set、get 方法 2 jit不能很好的优化反射代码 反射开销也跟反射占比有很大关系。
6.
ASM ASM是一个 Java
字节码操控框架。它能被用来动态生成类 或者增强既有类的功能。ASM 可以直接产生二进制 class 文 件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。 ASM能够通过改造既有类,直接生成需要的代码。增强的代 码是硬编码在新生成的类文件内部的,没有反射带来性能上 的付出。 ASM可以用来实现AOP。
7.
Fastjson特点 Fastjson所谓的fast主要是通过ASM自动生成反序列化字节码, 减少反射开销,理论上可以提高20%的性能。 Fastjson在其他json解析管线上的优化很一般。 ASM不支持android下的虚拟机,fastjson在android性能最差。 在hotspot上性能比gson稍好,低于jackson。 虚拟机 是否支持 Oracle Hotspot
支持 dalvik 不支持 lemur 不支持
8.
Gson特点 Gson是lite版的jackson,短平快。 Gson安装包小,运行时内存占用少。 相比于jackson,gson的json解析管线优化较少,运行时性能 比jackson差。 Android上如果不需要大量的解析json,可以考虑使用gson, 因为其资源占用少,功能性能够用。
9.
jackson特点 基于stream的api 高性能 支持丰富的功能 丰富的扩展,例如afterburner和fastjson一样都是基于asm的 字节码生成减少反射开销
10.
Jackson最佳实践 1 复用ObjectMapper、JsonFactory对象。 2 优先使用byte[]、其次inputstream、reader,最好不要转化 为string再去反序列化。 3
优先使用ObjectReader、ObjectWriter。
11.
Jackson注意事项for android 用同一个线程做json的解析,参考 https://github.com/FasterXML/jackson-core/issues/67
12.
移动端面临的问题 冷启动问题 由于dalvik、ART虚拟机无反射缓存时性能很差,第一次反序 列化json会有很大的时间开销。参考:link。 资源占用问题 jackson、gson对象会做反射缓存,占用堆空间,jackson比 gson占用内存更大。
解决方案:jackson、gson对象使用单例模式做复用,使用软 引用单利对象,允许java内存不够时回收这些内存。
13.
参考资料 string.intern fastjson asm设计 jackson performance Performance
overhead of databinding
Download now