如何搞好性能优化

463 阅读3分钟

「这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战

想必大家都晓得,程序员想要提升,性能优化这块是最重要的一点,实现同样的功能,不同的设计思路能够极大的节省服务器开销,能够更好的提高用户体验,本篇文章我们就来一起探讨一下,性能优化优化的是哪些点。

性能优化的几个指标

  • QPS(每秒响应请求数量)

    QPS的提升,说明程序能够支持更大的并发,支持更多人同时在线

  • 延迟(执行时间)

    低延迟,说明响应速度快

  • 内存的使用率

    内存的飙高,往往涉及到内存溢出能一系列问题,也能看出我们对JVM的管理

  • 磁盘吞吐

    往往能为我们展现出I/O的使用情况

  • CPU

    CPU问题往往涉及到多线程,锁,死循环等等

  • 网络吞吐

    能够描述网络的使用情况

  • ...

性能优化的几大原则

  • 数据至上

    我们在分析定位性能问题,都需要有数据作为支撑,我们可以通过日志,压测等来分析问题,不能凭借感觉,我们应该查看系统监控界面,定位分析瓶颈出在哪里。

  • 禁忌过早优化

    过早的优化不光起不到明显效果,还可能南辕北辙。

  • 禁忌过度优化

    优化经常会是以空间换时间之类的,可能在某个角度被优化了,但站在其它角度又带来了新的问题

  • 不能脱离业务

    程序的最终职责是为了完成业务需求,做好用户体验,不能因为优化去改变需求。

  • 长期坚持

    性能优化是一件长期的事情,面对数据增长,需求堆叠会带来新的新能瓶颈,需要做好持久战的准备。

  • 选择合适的衡量标准

    上一节说道评判性能的一些指标,我们在发现性能问题时要选择合适的衡量指标,优化前后进行对比,也需要检测其它指标,防止优化后带来新的性能问题。

性能优化的时机

  • 需求提出阶段

    在需求分析阶段,要做好思考,分析需求的合理性,找到更好的解决方案

  • 设计阶段

    在做架构设计,技术选型,接口设计,数据库设计的时候,在设计上做好工作,避免出现瓶颈无法优化,需要推到重来。

  • 实现阶段

    编码的时候,使用更优的算法,更适合的设计模式来优化代码。

  • 维护阶段

    随着数据的不断增多,慢SQL逐渐显现出来,还有一些接口速度过慢等等,需要我们去积极解决这些性能问题。

性能优化的方法

  • 借助缓存优化

    因为数据库一直都是应用的最大瓶颈,所以善于使用缓存也是重要的优化手段,这就是最典型的以空间换时间的思想。

  • 使用并行处理优化

    并行处理,也就是我们的多线程处理,将串行的执行,变为并行,能够更好的利用多核cpu的优势。

  • 使用批量处理优化

    使用批量处理往往更能节约资源,提高处理速度,尤其体现在网络IO、磁盘IO.

  • 使用惰性加载优化

    惰性加载,也就是懒加载,在需要使用的时候我们才会去创建实例。

  • 缩小解空间

    即缩小解题空间,就像数据库建立索引,通过索引,让我们不必去大海捞针,能够极大的提高响应速度。

  • 提升代码质量

    更简洁、规范的代码,不但便于维护,更能体现出高性能。