2015070401 - EffactiveJava笔记 - 第55条 谨慎地进行优化(4)
2015-07-04 09:22
288 查看
谨慎地设计程序后,有清晰,简明,结构良好的实现,那么可以考虑优化问题.
在每次视图做优化前后,要对性能进行评估.可能惊讶的发现优化前后对性能没有影响,或者性能下降.
原因在于什么呢?要猜出程序把时间花费在哪些地方并不容易.你认为程序慢的地方可能并没有问题.此刻优化等于浪费时间.
大多数人认为,程序把80%的时间花费在20%的代码上.
性能剖析工具有助于你决定应该把优化的重心当在哪里.工具可以提供运行时信息,比如方法运行时间,被调用多少次,警告你是否改变算法.
JDK带有简单的性能剖析器,IDE有成熟的性能分析工具.
在java平台进行优化结果测量,比在其他传统平台更有必要.因为java语言没有很强的性能模型,各种操作相对开销没有明确定义.
不要费力去编写快速程序,应该努力编写好的程序,速度自然随之而来.
在设计系统是,特别考虑在设计API,线路层协议,和永久数据格式的时候,一定要考虑性能问题.在构建系统后,要测试它的性能.如果足够快,那么任务完成;如果不够快,在性能分析器帮助下,找到问题根源,然后设法优化系统中相关部分.
检查所选的算法,再多底层优化也无法弥补算法选择的不当,必要时重复这个过程,在每次检查之后要测量性能,直到满意为止.
在每次视图做优化前后,要对性能进行评估.可能惊讶的发现优化前后对性能没有影响,或者性能下降.
原因在于什么呢?要猜出程序把时间花费在哪些地方并不容易.你认为程序慢的地方可能并没有问题.此刻优化等于浪费时间.
大多数人认为,程序把80%的时间花费在20%的代码上.
性能剖析工具有助于你决定应该把优化的重心当在哪里.工具可以提供运行时信息,比如方法运行时间,被调用多少次,警告你是否改变算法.
JDK带有简单的性能剖析器,IDE有成熟的性能分析工具.
在java平台进行优化结果测量,比在其他传统平台更有必要.因为java语言没有很强的性能模型,各种操作相对开销没有明确定义.
不要费力去编写快速程序,应该努力编写好的程序,速度自然随之而来.
在设计系统是,特别考虑在设计API,线路层协议,和永久数据格式的时候,一定要考虑性能问题.在构建系统后,要测试它的性能.如果足够快,那么任务完成;如果不够快,在性能分析器帮助下,找到问题根源,然后设法优化系统中相关部分.
检查所选的算法,再多底层优化也无法弥补算法选择的不当,必要时重复这个过程,在每次检查之后要测量性能,直到满意为止.
相关文章推荐
- Java解惑
- SpringMVC(一) HelloWorld
- 如何看待:java支持图形用户界面???
- 【工具】JAVA 在单元读取文件并比较
- Thking in Java---数组详解
- java的类:0
- Spring AOP-编程的方式创建代理类(ProxyFactoryBean)
- java用poi导入、导入excel
- java util包概述
- spring aop实现mysql读写分离(可用于SAE的mysql数据库)
- 《编程导论(Java)·4.1数据抽象的含义》
- java中FileOutputStream和FileInputStream类用法(总结的挺好)
- 1004--Java集合--Set 接口
- java实现下雪雪花飘落并堆积效果
- 1003--Java集合--List接口
- 《编程导论(Java)·3.3.2 按值传递语义》
- {Java}一个有关类属性初始化的有趣儿情况
- java中set\map自定义去重依据(重载Bean类的hashcode和equals)
- 基于MVC JavaEE,陈铖网上商城项目展示与实现二
- 基于MVC JavaEE,陈铖网上商城项目展示与实现一