我把咱们第二篇文章里面的TestVo转换成JsonCommonUtil.getMapperInstance(false);方式执行5次 平均耗时为210毫秒,把false改成true以后9991.6毫秒
这里我不是想测试它的性能(后面我会写一篇专门测试几种JSON类库性能的文章届时应该会涉及到json-lib ,jackson,Gson……等常用类库 ),我的机器也不给力。我主要是想说明的是每次new ObjectMapper() 和 全局使用一个 性能上相差了 大概47 倍。在这个时间就是金钱的世界47倍是什么概念,一个系统得转换多少次啊!
那大家可能说了你直接全局唯一是的,何必浪费时间来写一篇文章呢。别急,我来给大家解释一下!毕竟它是全局的那么在多线程情况下,并发情况下 它会是什么情况呢?会不会弄乱我们的数据?数据是万万不能乱的,你有1000W存款银行系统乱了一下 给你少个0 你会哭的很有节奏!
接下来看下jackson官方文当对ObjectMaper的解释:Jackson's org.codehaus.jackson.map.ObjectMapper "just works" for mapping JSON data into plain old Java objects ("POJOs").引自:http://wiki.fasterxml.co/JacksonInFiveMinutes
卖弄一下我可怜的英语: ObjectMapper 只用作把Json映射到PoJo ,可用在全局重用。
既然人家说了只是把Json映射到PoJo 可以全局使用,那咱们还有必要研究吗?我感觉有必要!因为我现在不知道他是否是线程安全的,毕竟数据第一。那么接下来咱们就一起测试一下极端情况下他是否是线程安全的。
我的测试思路是这样的:可以使用多个线程 线程1Mapper已经映射某一个实体的时候让线程一sleep 然后线程二执行。看看线程2转换的结果是否正确,虽然有点不准确但是也能大概看出来是否是线程安全的。因为代码太多目前正在整理,等整理完毕我贴上代码。
联系客服