如何理解性能问题

109 阅读2分钟

学习理解运行的程序的性能问题与学习debug是一样不可避免的。很多人完成了需求以及功能,但是这个功能的耗时与占用内存全然不管,导致了所写的代码很难受到他人的认可。所以说理解性能问题,能帮助你升华你的代码以及编程水平。

有可能你的客户认为你的一个系统或子系统运行太慢了,或者一跑你的程序就瞬间把cpu的核挤爆了。你要想办法去优化它,去提升它的性能,或者更贴切的说去优化你的逻辑以及算法。

你可能需要去构建一个它为什么慢的思维模型,你可以用一个图表工具或者打印运行时间戳,去发现时间或资源真正被损耗的地方。有可能大部分时间是以某种形式华为费在I/O上。发现昂贵的I/O和昂贵的10%代码是构建思维模型的一个好的开始。打开你windows的任务管理器,可以清晰的看到各个数据以及图表。

图片

计算机系统的性能优很多个维度,很多资源会被消耗。第一种资源是“挂钟时间”,即执行程序的所有时间。记录“挂钟时间”是一件特别有价值的事情。有时候有些东西只是稍微多花费了一点点时间,并且不会引爆什么问题,只有在特定的场景下才会引发crash,所以在你真实要处理的计算机环境中,多一些处理器时间可能会是更好的选择。相似的内存,网络带宽,数据库或其他服务器访问,可能最后都比处理器时间要更加昂贵。

竞争共享的资源被同步使用,一切都到后面都会是资源的争夺,可能导致司索和互斥。死锁是由于不恰当的同步和请求资源导致线程执行能力的丧失。互斥是对于资源访问的不恰当安排。尤其是在多线程高并发的场合,忽略一些东西就会引来很大的麻烦。如果你可以预料到问题可能爆发的点,最好在