■造型和实例:造型会耗去2 到 200 个单位的赋值时间。开销更大的甚至要求上溯继承(遗传)结构。其他
681
…………………………………………………………Page 683……………………………………………………………
高代价的操作会损失和恢复更低层结构的能力。
■图形:利用剪切技术,减少在repaint()中的工作量;倍增缓冲区,提高接收速度;同时利用图形压缩技
术,缩短下载时间。来自JavaWorld 的“Java Applets”以及来自 Sun 的“Performing Animation”是两个
很好的教程。请记着使用最贴切的命令。例如,为根据一系列点画一个多边形,和drawLine()相比,
drawPolygon()的速度要快得多。如必须画一条单像素粗细的直线,drawLine(x;y;x;y)的速度比
fillRect(x;y;1;1)快。
■使用API 类:尽量使用来自 Java API 的类,因为它们本身已针对机器的性能进行了优化。这是用Java 难
于达到的。比如在复制任意长度的一个数组时,arraryCopy()比使用循环的速度快得多。
■替换API 类:有些时候,API 类提供了比我们希望更多的功能,相应的执行时间也会增加。因此,可定做
特别的版本,让它做更少的事情,但可更快地运行。例如,假定一个应用程序需要一个容器来保存大量数
组。为加快执行速度,可将原来的 Vector (矢量)替换成更快的动态对象数组。
1。 其他建议
■将重复的常数计算移至关键循环之外——比如计算固定长度缓冲区的buffer。length 。
■static final (静态最终)常数有助于编译器优化程序。
■实现固定长度的循环。
■使用javac 的优化选项:…O。它通过内嵌static,final 以及private 方法,从而优化编译过的代码。注
意类的长度可能会增加(只对JDK 1。1 而言——更早的版本也许不能执行字节查证)。新型的“Just…in
time”(JIT)编译器会动态加速代码。
■尽可能地将计数减至 0——这使用了一个特殊的JVM 字节码。
D。4 参考资源
D。4。1 性能工具
'1' 运行于 Pentium Pro 200,Netscape 3。0,JDK 1。1。4 的MicroBenchmark (参见下面的参考资源'5')
'2' Sun的Java 文档页——JDK Java 解释器主题:
http://java。sun。/products/JDK/tools/win32/java。html
'3' Vladimir Bulatov的HyperProf
http://physics。orst。edu/~bulatov/HyperProf
'4' Greg White 的ProfileViewer
http://inetmi。/~gwhi/ProfileViewer/ProfileViewer。html
D。4。2 Web 站点
'5' 对于Java 代码的优化主题,最出色的在线参考资源是Jonathan Hardwick 的“Java Optimization”网
站:
http://cs。cmu。edu/~jch/java/optimization。html
“Java 优化工具”主页:
http://cs。cmu。edu/~jch/java/tools。html
以及“Java Microbenchmarks”(有一个45 秒钟的评测过程):
http://cs。cmu。edu/~jch/java/benchmarks。html
D。4。3 文章
'6' “Make Java fast:Optimize! How to get the greatest performanceout of your code through low
level optimizations in Java”(让Java 更快:优化!如何通过在Java 中的低级优化,使代码发挥最出色
的性能)。作者:Doug Bell。网址:
http://javaworld。/javaworld/jw…04…1997/jw…04…optimize。html
(含一个全面的性能评测程序片,有详尽注释)
'7' “Java Optimization Resources ”(Java 优化资源)
http://cs。cmu。edu/~jch/java/resources。html
'8' “Optimizing Java for Speed”(优化Java,提高速度):
http://cs。cmu。edu/~jch/java/speed。html
682
…………………………………………………………Page 684……………………………………………………………
'9' “An Empirical Study of FORTRAN Programs”(FORTRAN 程序实战解析)。作者:Donald Knuth。
1971 年出版。第 1卷,p。105…33,“软件——实践和练习”。
'10' “Building High…Performance Applications and Servers in Java:An Experiential Study”。作
者:Jimmy Nguyen,Michael Fraenkel,RichardRedpath,Binh Q。 Nguyen 以及Sandeep K。 Singhal。IBM
T。J。 Watson ResearchCenter;IBM Software Solutions。
http://ibm。/java/education/javahipr。html
D。4。4 Java 专业书籍
'11' 《Advanced Java ,Idioms,Pitfalls ,Styles; and Programming Tips》。作者:Chris Laffra。
Prentice Hall 1997 年出版(Java 1。0 )。第 11 章第20 小节。
D。4。5 一般书籍
'12' 《Data Structures and C Programs》(数据结构和C 程序)。作者:J。Van Wyk。Addison…Wesly
1998 年出版。
'13' 《Writing Efficient Programs》(编写有效的程序)。作者:Jon Bentley。Prentice Hall 1982 年
出版。特别参考p。110 和p。145…151。
'14' 《More Programming Pearls》(编程拾贝第二版)。作者:JonBentley。“Association for
puting Machinery”,1998 年2 月。
'15' 《Programming Pearls 》(编程拾贝)。作者:Jone Bentley。Addison…Wesley 1989 年出版。第2 部
分强调了常规的性能改善问题。 '16' 《Code plete:A Practical Handbook of Software
Construction》(完整代码索引:实用软件开发手册)。作者:Steve McConnell。Microsoft 出版社 1993
年出版,第 9 章。
'17' 《Object…Oriented System Development》(面向对象系统的开发)。作者:Champeaux,Lea 和
Faure。第25 章。
'18' 《The Art of Programming》(编程艺术)。作者:Donald Knuth。第1卷“基本算法第3 版”;第3
卷“排序和搜索第 2 版”。Addison…Wesley 出版。这是有关程序算法的一本百科全书。
'19' 《Algorithms in C:Fundammentals;Data Structures; Sorting;Searching》(C 算法:基础、数据结
构、排序、搜索)第3 版。作者:RobertSedgewick。Addison…Wesley 1997 年出版。作者是Knuth 的学生。
这是专门讨论几种语言的七个版本之一。对算法进行了深入浅出的解释。
683
…………………………………………………………Page 685……………………………………………………………
附录 E 关于垃圾收集的一些话
“很难相信Java 居然能和C++一样快,甚至还能更快一些。”
据我自己的实践,这种说法确实成立。然而,我也发现许多关于速度的怀疑都来自一些早期的实现方式。由
于这些方式并非特别有效,所以没有一个模型可供参考,不能解释Java 速度快的原因。
我之所以想到速度,部分原因是由于C++模型。C++将自己的主要精力放在编译期间“静态”发生的所有事情
上,所以程序的运行期版本非常短小和快速。C++也直接建立在C 模型的基础上(主要为了向后兼容),但有
时仅仅由于它在C 中能按特定的方式工作,所以也是C++中最方便的一种方法。最重要的一种情况是C 和C++
对内存的管理方式,它是某些人觉得Java 速度肯定慢的重要依据:在Java 中,所有对象都必须在内存
“堆”里创建。
而在C++中,对象是在堆栈中创建的。这样可达到更快的速度,因为当我们进入一个特定的作用域时,堆栈
指针会向下移动一个单位,为那个作用域内创建的、以堆栈为基础的所有对象分配存储空间。而当我们离开
作用域的时候?
小说推荐
- 软件工程实践者的思想(PDF格式)
- -Page 1-大 道 至 简—软件工程实践者的思想周爱民(Aimingoo 著-Page 2-序2004 年 11 月初爱民(Aimingoo)第一次把他的书稿给我,我翻看了一下,第一反应讲的是感想。这不错,在技
- 最新章:第26章
- 深入浅出MFC第2版(PDF格式)
- -Page 1-Page 2-山高月小山高月小 水落石出水落石出山高月小山高月小 水落石出水落石出-Page 3-深入淺出MFC(第版 使用Visual C 5.0 MFC 4.2)Dissecting MFC(Second Edition Using Visual C 5.0 MFC 4.2)侯俊
- 最新章:第309章
- VB2008从入门到精通(PDF格式英文版)
- -Page 1(R)The eXperT’s Voice inBeginningVB 2008From Novice to ProfessionalChristian Gross-Page 2-Page 3-Beginning VB 2008From Novice to Professional■C
- 最新章:第214章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 最新章:第28章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 最新章:第143章
- 神祗之眼 (正式版)第7卷(全文完)作者:百里芜虚
- 第五十一章离12月25日的圣诞节还有两天,纽约已经换上了节日的盛装,几天前的一场大雪令整个城市一片银白。人们笑逐颜开,都纷纷开始为节日做准备,商家为了在节日打开销路纷纷推出各种优惠促销手段,纽约的大街小巷全都这样热闹。依沙那被老婆打发出来买过节要用的杂货,而女儿则和凯妮一起到百货商场去买衣服去了。对
- 最新章:第23章
- SQL语言艺术(PDF格式)
- -Page 1-SQLSSQQLL语言艺术内容介绍本书分为12章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例子大多来自于实际案例,对九种SQL经典查询场景以及其性能影响讨论,非常便于实践,为你数据库应用维护人员阅读。资深 SQL 专家 Stéphane Faroult倾力打
- 最新章:第27章
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 最新章:第31章