因此我们通过压测去合理设定线程池大?。跣『诵南叱淌胱畲笙叱淌涞牟钪担行┲苯由柚梦嗟龋柚孟叱坛卦と群诵南叱?,改善上述问题 。
3 优化代码
代码层面的优化,带来的提升表现在更微观的层面,我们可以通过JMH等工具做一些微基准测试来对比优化前后的效果 。对于高流量的应用,微观层面的优化也可以带来一定的吞吐提升 。
6.3.1 深拷贝优化
为了避免对共享资源造成污染,通天塔代码中使用了深拷贝方式来保护共享资源 。原先通过序列化-反序列化的方式实现,这种方式拷贝流程长、中间对象多 , GC有额外的压力 。优化后我们使用Cloning深拷贝工具,直接进行对象到对象的拷贝,缩短了拷贝流程,同时也不要求POJO实现Cloneable接口,避免了使用原型模式过多的限制 。
图6.3.1.a:深拷贝优化示意图
6.3.2 对象重用&无竞争
【京东通天塔有效果吗 京东通天塔有什么用处】通天塔灰度功能采用了随机灰度的策略,代码中使用Random对象,这里存在一些代码重用和竞争的问题 , 优化过程如下图所示
图6.3.2.a 对象重用&无竞争优化示意图
6.3.3 其他代码优化
虽然“不提倡过早优化”这句话老生常谈 , 但并不意味着我们写每一行代码时可以很随意,我们完全可以选择更优的实现方式 。各种编码规约,设计模式其实就是前人总结出来的宝贵经验,帮助我们更好地编码实现 。
其实,代码层面可注意的优化点非常多 , 这里只列出一些供参考:
- 正则表达式使用独占模式
- JIT优化内联:短方法;尽量private/static/final修饰方法
- 锁优化:锁分离;细粒度锁;乐观锁;无锁(不可变模型/ThreadLocal等)
- 时间换空间:数据压缩降低网络IO;String常量池重用
- 空间换时间:哈希表;缓存等
总体而言,设计层面的优化难度较高,对于聚合应用而言效果最显著;组件、代码层面的优化也有不错的效果,但更多的需要通过微基准测试去验证 。最后,也是我们觉得最重要的一点就是:系统优化必须保证系统的稳定性和正确性 , 必须通过严格的验证和测试,否则,宁可不优化 。我是科技萌新 ~ 欢迎您关注和点赞!
推荐阅读
- 第一次和女生见面送什么礼物好 第一次和女生见面适合送什么礼物
- 百子莲养殖方法 百子莲养殖方法有什么
- 教育心理学的体系是怎样的
- 房产交易适用税费 最全总结 房地产税种
- 22岁0基础可以做什么 22岁0基础学什么技术好
- 考博需要什么条件,读博的条件
- 考会计证有年龄限制吗
- 一加电视售价是多少钱 一加电视卖多少钱
- 龙门石窟为什么有这么多佛像 龙门石窟简单介绍