当前位置: 移动技术网 > IT编程>软件设计>架构 > 开篇:性能问题的现状

开篇:性能问题的现状

2020年07月17日  | 移动技术网IT编程  | 我要评论

性能问题的现状

性能优化?是不是感觉这个词很高大上?刚工作2、3年的程序员甚至觉得学此技能有点早?真的是这样吗?
在这里插入图片描述
“互联网寒冬季”来的那么措手不及,致使初级工程师面试都会被问及程序性能优化、JVM调优、架构优化等优化方案,此时该技能若不了解一二,被 pass 的几率就…(此处省略了“杯具”)

好了,言归正传,程序员系统学习性能优化还是至关重要的,如果项目上线时间充足,必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升,对于个人提升也是很有帮助。说起来性能优化,那么程序的性能到底体现在哪里呢?我们开始本小节的学习吧。

一、程序的性能表现

项目运行虽正常,但是随着用户访问增多,并发量急剧增大,这时可能就会出现服务器的响应时间变长、吞吐量下降、甚至是抛出内存溢出异常而崩溃。这些问题都是程序性能调优需要解决的。我们的程序性能也主要体现在以下这几个方面:

  1. 执行速度:程序的反映是否迅速,响应时间是否足够短

  2. 内存分配:内存分配是否合理,是否过多地消耗内存或者存在泄漏。

  3. 启动时间:程序从运行到可以正常处理业务需要花费多长时间。

  4. 负载承受能力:当系统压力上升时,系统的执行速度、响应时间的上升曲线是否平缓

敲敲黑板,同学们这部分是重点!

二、程序的性能指标

什么是性能指标,其实应该说是性能优化指标,即我们在性能优化的过程中应该关注的地方。您可能会问了:是啊,光知道要优化,我们应该优化哪些地方呢?

回答这个问题之前我还想问一个问题:你觉得什么样的程序才是一个好的程序呢?这个问题可能一千个人有一千个哈姆雷特,每个人的回答可能都不会相同,但是我觉得每个人的回答其本质都应该是用最少的资源最短时间内响应用户。

那么不能让系统在最短的时间内用最少的资源最快的速度响应用户的都是程序的瓶颈,即所谓的性能优化指标。

主要体现以下指标:

  1. 执行时间:一段代码从开始运行到运行结束,所使用的时间。

  2. CPU时间:函数或者线程占用

  3. 内存分配:程序在运行时占用的内存空间。

  4. 磁盘吞吐量:描述I/O的使用情况。

  5. 网络吞吐量:描述网络的使用情况。

  6. 响应时间:系统对某用户行为或者事件做出响应的时间。响应时间越短,性能越好

上面几点中无论哪一个指标的性能出现瓶颈都有可能会导致整个系统性能低下,可见快速定位问题所在以及如何优化是很重要的。

三、性能优化离我们很远吗

还是开头那句话,刚工作2、3年的程序员甚至觉得学此技能有点早,真的是这样吗?

其实不然,我觉得在我们刚刚踏入程序员这个圈子的时候我们就应该关注这个问题,哪怕在平时写代码的时候我们也在涉及这个领域。

在这里插入图片描述

举个“栗子”

  1. 尽量指定类、方法的final修饰符

  2. 尽量重用对象

  3. 尽可能使用局部变量

  4. 及时关闭流

  5. 尽量减少对变量的重复计算

  6. 尽量采用懒加载的策略,即在需要的时候才创建

  7. 循环内不要不断创建对象引用

  8. 尽量在合适的场合使用单例

  9. 尽量避免随意使用静态变量

好吧,是不是有的小伙伴觉得太简单了呢!你可能会说这些我在平时工作的时候注意一下就行了啊,没必要在系统学习了吧?

其实不然,上面简单样例只是从程序的部分细节进行了优化,此外本专栏还会设计 JVM调优、缓存设计、GC应用、架构设计 等等多维度优化程序的性能,此时是不是觉得压力山大了呢?接下来的专栏小伙伴要认真学习了。

我们的最终目标:

  1. 个人能力提升
  2. 减少代码体积
  3. 提高代码运行效率
  4. 全面了解性能各种表现和指标

四、小结

本小节介绍了程序的性能表现、优化指标、程序优化举例三方面知识,下小节学习性能优化部分理论知识

最后,谢谢小伙伴对本专栏的支持,也感谢平台提供的服务,让我们有更多的机会在一起交流、一起学习。通过此专栏希望大家对Java性能调优有更加深入的理解。

小节学习性能优化部分理论知识

最后,谢谢小伙伴对本专栏的支持,也感谢平台提供的服务,让我们有更多的机会在一起交流、一起学习。通过此专栏希望大家对Java性能调优有更加深入的理解。

本文地址:https://blog.csdn.net/zzhuan_1/article/details/107373091

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网