这行代码大约需要2秒钟才能执行!
ObjectMapper mapper = new ObjectMapper();
因为两秒钟是计算机的生命周期,有没有办法让杰克逊更快地做出响应?
我正在使用:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
答案 0 :(得分:0)
您使用的Jackson版本是旧版本,请考虑升级到Jackson 2.0。可能需要做一些努力(取决于您使用的API),但任何新功能和性能增强可能仅为2.x.有关更多信息和升级说明,请查看Jackson Release: 2.0。
至于ObjectMapper
,这就是Jackson Best Practices: Performance所说的:
ObjectMapper:对象mappers缓存序列化器和反序列化器,这些序列化器和反序列化器是为给定类型首次需要处理程序创建的(或者更确切地说,mapper保存对Provider对象的引用)。如果不重用映射器,则每次都需要创建新的序列化器和反序列化器:由于涉及内省和注释处理的数量,这些都是昂贵的操作。
您正在运行的平台是什么,也许是移动设备?在我3岁以上的笔记本电脑上创建一个实例只需不到半秒钟。
如果性能受到关注并且您的JSON不是太复杂,请考虑使用Jackson的流API(这是Jackson的真正力量)自己解析JSON数据,它会快一个数量级。