《Java白皮书1996自译》08:性能比较

詹姆斯·高斯林

第八章 性能比较

本章讨论了Java的潜在采用者感兴趣的两个问题,即Java的性能如何,以及它与其他可比较的编程语言相比如何?我们首先讨论性能问题,然后再与其他语言进行简要比较。

8.1、性能

Java已经移植到各种硬件平台上,并在这些平台上运行各种操作系统软件。在目前的高端计算机系统如工作站和高性能个人计算机上对一些简单的Java程序进行测试,结果大致如下:

● 每秒创建对象119,000个

● new C()(有多个方法的类)每秒89,000个

● o.f()(对象o调用方法f)每秒590,000

● o.sf()(对象o上调用的同步方法sf)每秒61,500

因此,我们看到,需要大约8.4µsec创建一个新的对象,创建一个新的类包含几个方法消耗大约11µsec,和一个对象调用一个方法需要大约1.7µsec。

虽然这些解释字节码的性能数字通常足以运行交互式图形化最终用户应用程序,但也可能出现需要更高性能的情况。在这种情况下,可以动态地(在运行时)将Java字节码转换为应用程序执行所在的特定CPU的机器码。这个过程是由Just In Time (JIT)编译器执行的。对于那些习惯于编译器和动态加载器的常规设计的人来说,准时编译器有点像将最终的机器码生成器放在动态加载器中。

扫描二维码关注公众号,回复: 9731689 查看本文章

字节码格式在设计时考虑了生成机器码,因此生成机器码的实际过程通常很简单。产生了相当好的代码:它自动分配寄存器,编译器在生成字节码时进行一些优化。转换成机器码的字节码的性能与本机C或c++大致相同。

8.2、Java语言比较

有数百种编程语言可供开发人员编写程序来解决特定领域的问题。编程语言涵盖了一系列完全解释的语言,如UNIX shell、awk、TCL、Perl等,一直到“用最基本的语言编程”,如C和c++。

例如,shell和TCL级别的语言是完全解释的高级语言。它们在系统级处理“对象”(从某种意义上说,它们可以处理所有对象),其中它们的对象是文件和进程,而不是数据结构。其中一些语言适合非常快速的原型设计——您可以快速地开发您的想法,尝试新的方法,并抛弃无效的方法,而不需要在这个过程中投入大量的时间。脚本语言也是高度可移植的。它们的主要缺点是性能;它们通常比本机机器码或解释的字节码慢得多。如果这样一个程序的运行时间相当短,并且您不经常使用该程序,那么这种权衡可能是合理的。

在中间阶段出现了像Perl这样的语言,它们与Java有许多共同的特征。Perl正在进行的发展导致了面向对象特性、安全特性的采用,而且它与Java有许多共同的特性,如健壮性、动态行为、体系结构中立性等。

最底层是C和c++之类的编译语言,在这些语言中,您可以开发大型编程项目,从而提供高性能。然而,高性能是有代价的。缺点包括调试不可靠的内存管理系统的高成本,以及使用难以实现和使用的多线程功能。当然,当您使用c++时,您会遇到持久的易碎超类问题。最后但绝不是最不重要的一点是,在Internet上各种异构平台的上下文中,已编译代码的二进制分布问题变得难以管理。

Java语言环境在非常高级和可移植但速度很慢的脚本语言和非常低级和快速但不可移植且不可靠的编译语言之间创建了一个非常有吸引力的中间地带。Java语言正好处在这个空间的中间。除了程序极其简单、高度可移植性和体系结构中立之外,Java语言还提供了除计算密集型应用程序外完全适合所有应用程序的性能级别。

Java语言的潜在采用者需要研究Java语言在其他语言中的地位。下面是一个基本的比较图表,它演示了Java语言的属性——简单的、面向对象的、线程化的等等——如本文前面部分所述。

Java语言的属性

从上面的图表中,您可以看到Java语言具有丰富的属性,这些属性对各种开发人员都非常有益。您可以看到,Java、Perl和SmallTalk是可比较的编程环境,为软件应用程序开发人员提供了最丰富的功能集。

8.3、Java的主要优点:快速而无畏的原型设计

非常动态的语言,如Lisp、TCL和SmallTalk,通常用于原型设计。它们在这方面成功的原因之一是它们非常健壮——您不必担心释放或破坏内存。

类似地,在用Java编程时,程序员可以相对大胆地处理内存。垃圾收集系统大大简化了程序员的工作;随着内存管理的重担从程序员肩上卸下,存储分配错误也就消失了。

通常认为Lisp、TCL和SmallTalk等语言适合于原型设计的另一个原因是,它们不需要您在早期确定决策——这些语言在语义上非常丰富。

Java有完全相反的属性:它强迫您做出明确的选择。伴随这些选择而来的是大量的帮助——您可以编写方法调用,如果出现错误,您可以在编译时了解它。您不必担心方法调用错误。

8.4、总结

从上面的讨论中,您可以看到Java语言提供了高性能,而其解释的特性使其成为快速而大胆地构建原型的理想开发平台。在前面几章中,您已经看到Java语言非常简单,并且是面向对象的。这种语言在基于网络的环境中是安全的。Java语言的体系结构中立和可移植方面使其成为满足跨网络动态分发可扩展软件的挑战的理想开发语言。

现在我们转向HotJava全球网络浏览器。

前八章是对Java语言环境的介绍。您已经了解了Java的功能及其为分布式世界开发软件的明显好处。现在该进入下一章了,我们来看看HotJava worldwide Web browser,这是一个主要的终端用户应用程序,它是为了利用Java语言环境的动态特性而开发的。


好好学习,天天向上!继续下一章…


发布了37 篇原创文章 · 获赞 30 · 访问量 5955

猜你喜欢

转载自blog.csdn.net/goldentec/article/details/104780430
今日推荐