《How to be a Programmer》读书笔记——性能问题

性能问题

性能的好坏一般体现在系统运行所产生的开销。客户需要或市场竞争使得我们需要提高系统的性能,但是如何把系统变快呢?首先我们必须去弄清楚真正花费时间或资源的地方。

90%的时间会花费在10%的代码上。

文中提到“通常大部分时间是以某种形式花费在I/O上。” 我们可以从发现这些昂贵的I/O和这些10%的代码开始去构建一个关于时间消耗的思维模型(图表工具或日志)。

计算机系统的性能有很多个维度。

执行程序的所有时间为“挂钟时间”,即执行程序的所有时间。处理器时间可以帮助你发现那些多花费一点点时间的东西,然而,真实要处理的计算机环境中,如内存,网络带宽,数据库或是其他服务器访问,这些可能最后会花费比处理器更加昂贵的时间。

死锁和互斥:导致这两种情况的原因是共享的资源的竞争。

死锁是由于不恰当的同步和请求资源导致线程执行能力的丧失。
互斥是对于资源访问的不恰当安排。

为避免出现线程资源争抢情况,应该提前对其采取防范措施。

修复性能问题

提高一个非常复杂的性能的关键是,充分分析它,来发现其“瓶颈”,或者其资源耗费的情况。
一个简要的原则是,你在做任何事情之前必须仔细思考。

修复性能问题时,考虑修改会带来的测试以及其是否能够保证工作需要和质量,这个修改最好能带来较大的性能提升。在攻克一个问题取得效果后,我们需要考虑重新分析,发现下一个瓶颈(从较容易发现的问题入手,再进行深入分析)。

在考虑继续优化,你可能会希望重构整个系统或某个子系统,然而在此之前,我们应该思考是否这个建议会让系统的性能提升5到10倍!(不要轻易重构系统)

思考: 在实际解决一个问题之前,不管是什么问题,一定要充分思考问题所在,解决问题的必要性和可行性,以及解决问题时不要引入新的问题。

猜你喜欢

转载自blog.csdn.net/easywaytolifebelief/article/details/83547727
今日推荐