项目中的性能优化

      在实际项目中,由于需要把接口返回来的对象存在数据库中,所以用到了jackson组件把对象转成json后再保持到数据库中。由于每天处理的数据量太大,而业务对时间的要求非常严格,即使采用4台机器做分布式后,计算时间仍然在2——3个小时,于是性能优化提上了日程。

      用jprofiler工具观察到性能主要在两个地方耗时比较多:1.tojson串转换,2.调用其他系统接口。

      调用其他系统接口耗时占比在17%左右,tojson转换耗时占比在20%左右。经过小组讨论,决定采用memcached在运行计算之前就缓存数据。缓存命中率为83.4%的情况下,性能如下:

 

 

统计

未使用缓存

使用缓存

计算总耗时

39 分钟

34 分钟

单个接口耗时ms/ 次)

38

12.9

接口 耗时总计

15 分钟

5 分钟

接口 调用次数

24002

24007

数据量

5000

5000


      可见,调用接口性能提升2/3。

      tojson串转换采用StringBuilder替换jackson的性能对比如下:



tojson 数据量10000,每个单个1400字节左右 ,测试5次耗时(ms)情况如下
  1 2 3 4 5 平均
jackson 1204 1183 1196 1202 1160 1189
new StringBuilder 1060 941 912 997 1160 1014
new StringBuilder(1600) 784 824 853 818 778 811.4


      从对比中可以看到 StringBuilder的性能比jackson提高1/4左右。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值