【重构学习】01 重构与性能

  重构并不意味着性能更好,但是重构可以让性能优化更容易!!!

   关于写出高性能代码

  写出高性能代码的前提:首先你得有个可以调整的程序。

  就像别人问你如何和女朋友更好相处一样,首先你得有个女朋友。

  写出高性能代码的方法:

  1、时间预算法

   给每个组件分配一定的资源——包括时间和执行轨迹,每个组件不能超过自己的预算。

   通常用于要求极高的实时系统。

  2、持续关注法

   这种方法要求任何程序员在任何时间做任何事情时,都要保证系统的高性能。

   这种方式很常见,感觉很有吸引力,但通常不会起太大作用。(《重构》作者原话)

   任何修改如果是为了提高性能,通常会使程序难以维护,继而减缓开发速度。

   而且性能改善一旦被分散到程序各角落,每次改善都只不过从对程序行为的一个狭隘的角度出发而已。

   一个程序通常大半的事件都耗费在一小半代码上,如果你一视同仁优化所有代码,90%的优化都是白费劲,因为你优化的代码很少执行。

  你花时间是为了让程序运行更快,如果缺乏对程序的清楚认识而花费时间,那些时间就被浪费掉了。

  3、热点提升法(本人的命名)

   采用这种方法,编写代码的时候不需要对性能投以特别的关注,直至进入性能优化阶段——通常在开发后期。

   在性能优化阶段:

   首先用某种度量工具监控程序的运行,找到消耗大量时间和空间的的代码,也就是"热点"了。

   然后去优化这些热点,就可以花费较少的时间取得较好的优化效果

  关于重构对性能优化的帮助

  首先,一个构造良好的代码让你有足够的时间进行性能调整,因为它你可以更快速地添加功能,也就有更多时间用在性能问题上(准确的度量则保证你把这些时间用在恰当的地点)。

  其次,面对构造良好的程序,你在进行性能分析时便有较细的粒度,于是度量工具把你代入范围较小的程序段落中,而性能的调整也比较容易些。由于代码更加清晰,因此你能更好地理解自己的选择,更清楚哪种调整起关键作用。

  

                                                      

 

  

  

  

  

时间: 2024-12-19 22:52:01

【重构学习】01 重构与性能的相关文章

重构学习-重构原则

什么是重构: 视上下文重构有两个不同的定义,第一个定义是名词形式 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本 重构的另一人用法是动词形式 使用一系列的重构手法,在不改变软件可观察行为的前提下调整其结构. 有人说重构就是整理代码 ,从某种角度上来说,是,但是重构不止于此,因为它提供了一种更为高效且受控的代码整理 技术,运用代码重构技术后你会发现对代码的整理会比以前更加高效. 重构的目的是使软件更容易被理解和侯.你可以在软件的内部做很多修改,但必须

C#重构学习

转帖一个代码重构帖子用于学习 代码重构 重构(Refactoring)就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量.性能,使其程序的设计模式和架构更趋合理,提高 软件的扩展性和维护性. 一.为什么要重构(Refactoring) 1.·持续偏纠和改进软件设计. 2.·使代码更易为人所理解. 3.·帮助发现隐藏的代码缺陷. 4.·从长远来看,有助于提高编程效率. 二.何时着手重构(Refactoring) 1.·代码中存在重复的代码. 2.·过大的类和过长的方法. 3.·牵一毛

【重构学习】12 重构学习感想

其实也没什么想继续说重构了,你我都清楚这仅仅只是一个开始,进一步的就是靠个人去不断积累重构经验了. 我们学到的依然只是套路,玩熟的话还远着呢. 不仅仅是何处重构,如何重构的问题,更需要对重构的时间进行掌控,并且迫切需要实施重构的勇气. 好吧,自学完了<重构>. 用时18天. 从来没有如此兴奋过,这一切好像都只是开始. 我的学习兴趣被激发起来了吗,是的. 它没有在我高中时候来到,也没有在我大学时候来到,如今才开始,所幸不晚.

【重构学习笔记】

重构的定义:重构是对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本 从定义里我们可以看出,重构是对代码和架构的一种修改,旨在提高代码的效率和可读性,来达到降低修改成本的目的.而重构对于用户体验来说,就像定义中说到的,只能对可观察行为作出很小的变化,甚至不造成变化. 关于同事些代码经常会把DAO注入到表现层Controller里面使用,我一直很反感这样的做法,奈何找不出可以反驳这些老员工的理由,确实才疏学浅了. 认真想想 例如,一般情况,我们会在Ser

C#重构学习2

转帖重构学习 重构?代码坏味道?看到这两个疑问,也许就知道本期的话题是关于“重构”的,重构无处不在,重构可大可小,重构随时随地.让重构时刻记在脑海,使自己的代码变的优美.就让这本“重构艺术”手册带你走进重构的世界,亲密接触重构,如欣赏艺术般,体会重构的魅力. 文章下载地址:http://files.cnblogs.com/xia520pi/C_Sharp_Refactoring.rar 文章的目录: 1.代码重构 1.1.版权声明 1.2.内容详情 2.项目重构方案设计 2.1.版权声明 2.2

重构摘要2_重构原则

何谓重构 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提交其可理解性,降低其修改成本. 重构的目的是软件更容易理解和修改: 重构不会改变软件可观察的行为. 两顶帽子比喻 添加新功能 不修改既有代码,只管添加新功能,并通过测试 重构 不添加功能,只管改进程序结构 为何重构 重构改进软件设计 改进的重要方向就是消除重复代码. 重构使软件更容易理解 准确说出我所要的 利用重构来协助我理解不熟悉的代码 随着代码渐趋简洁,发现可以看到一些以前看不到的设计层面的东西. 重构帮助找到BUG

【Java重构系列】重构31式之封装集合

2009年,Sean Chambers在其博客中发表了31 Days of Refactoring: Useful refactoring techniques you have to know系列文章,每天发布一篇,介绍一种重构手段,连续发文31篇,故得名“重构三十一天:你应该掌握的重构手段”.此外,Sean Chambers还将这31篇文章[即31种重构手段]整理成一本电子书, 以下是博客原文链接和电子书下载地址: 博客原文:http://lostechies.com/seanchamber

【Java重构系列】重构31式之搬移方法

重构第二式:搬移方法 (Refactoring 2: Move Method) 毋容置疑,搬移方法(Move Method)应该是最常用的重构手段之一,正因为太常用而且较为简单,以至于很多人并不认为它是一种很有价值的重构,但事实并非如此,在最初的代码诞生之后,有些方法可能会被放在一些不合适的地方,例如,一个方法被其他类使用比在它所在的类中的使用还要频繁或者一个方法本身就不应该放在某个类中时,我们应该考虑将它移到更合适的地方.搬移方法,顾名思义就是将方法搬移至合适的位置,如将方法搬移到更频繁地使用

RabbitMQ (消息队列)专题学习01 RabbitMQ部署

一.概述 RabbitMQ(Message Queue)是当前流行的开源的消息队列系统,用ERLang语言开发,按照AMQP(Advanced Message Queue Protocol)的标准实现,消息队列是一种应用程序对应用程序之间的通信方法,应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,则无需专用链接来链接它们,RabbitMQ便是这样一种用于应用程序之间通信的中间件. 二.架构 RabbitMQ的架构图如下: 图-1 在此有几个概念需要说明一下: 1.Exchange:消

设计模式学习01—单例模式

一.动机与定义 系统中有些资源只能有一个,或者一个就够,多个浪费.例如一个系统只能有一个窗口管理器或文件系统.一个系统只能有一个计时器或序号生成器.web系统只能有一个页面计数器等等.此时,最好就需要把这些资源设置成有且仅有一个实例. 代码中也就是如何保证一个类只有一个实例并且这个实例能够被访问呢?只有一个实例的就意味着不能让其他类来实例化,也就是只能自己实例化自己.能够被访问也就意味着自身要对外提供全局方法来获取到这个实例,这就是单例模式. 单例模式定义:确保某一个类只有一个实例,而且自行实例