本文共 3212 字,大约阅读时间需要 10 分钟。
摘要
设备的性能可以帮助开发者开发出能让用户有好的体验的应用.了解性能可以帮助开发者了解每种设备的优缺点以及为具体设备开发合适的应用.进行性能测试是从底层来评价设备的.这篇文章是描述的是关于现有一些的J2ME(Java 2 Platform,Micro Edition)设备在Java 无线应用核心性能测试结果的文章.测试中心根据设备在测试中的性能分成不同的几类:虚拟机(VM)性能, 线程切换(thread-switching), 图形(graphics), RMS (record management system), 网络通信性能(network communication), 以及XML解析(XML parsing).第一部分:J2ME设备:真实性能
J2ME(Java 2 Platform,Micro Edition)设备早已在亚洲与欧洲推出,现在也开始在美国推出了.厂商早已经推出了成千上万具有J2ME功能的GSM手机和PDA,不久的将来J2ME平台将成为通信设备/消费类设备等基本的功能.java的跨平台特性将允许一个程序可以在不同设备上运行.
然而,随着java设备越来越多,由于处理器,虚拟机还有设备的内存的不同导致针对某个产品的应用也存在很大的差异.不同的商家可能会开发出各自的虚拟机.因此,设备性能是编写适合的程序的前提.在桌面平台活服务器环境下,广泛被接受的传统的指标有:CaffeineMark, Linpack, SPECmarks和Dhrystones,但却大多与J2ME设备的性能无直接联系的.J2ME设备属于嵌入式的轻量级的运算设备,而不具备传统桌面或服务器同样的性能.所以,我们必须先弄明白怎样来测试J2ME设备的性能.
J2ME设备强调的不是巨大的运算量和复杂程度,而是简单的用户业务.因为特别小的屏幕尺寸和很麻烦的输入系统,使得有一个良好的用户体验的用户界面和运算成为每一个J2ME应用极其重要的一个要求.
在这篇文章里,我们从用户的角度来测试J2ME设备的性能,而不是从特定设备的处理器或运行的操作系统出发的.测试关注的是通过启动某个特定的功能,看能否为用户带来良好的体验.
目标平台
因为当前市场上出现的内置J2ME平台的设备只有支持CLDC 1.0和MIDP 1.0,我们的测试是基于J2ME CLDC/MIDP1.0的.等将来支持更高的J2ME版本的设备出来之后我们再更新这个基准.测试的设备
截止到2002年5月15日,市场上已经可以找到70多种支持J2ME的移动设备,而且数量还在很快的增长中.在测试中我们用到下列设备,这里是根据设备的功能分类,而不是根据性能分类.
通用的java电话 : Siemens SL45i/6688i Siemens M50 (也就是3118) 智能电话: Nokia 9210 Communicator Nokia 7650 Motorola Accompli 008 (也就是A6288) Motorola 388 PDA: Palm m125 Handspring Treo 270 Communicator iPAQ 3760 J2ME Wireless Toolkit (PC模拟器)虽然J2ME Wireless Toolkit 1.04 有根据设备定制,异常跟踪,内存使用管理等功能,但为了更好的作比较,我们都不使用这些功能,而且是基于Microsoft Windows2000和Intel Pentium4 1.5-GHz的环境下来测试我们的基准应用程序的.
iPAQ3760支持PersonalJava(Jeode)和J2ME(IBM J9 VM).通过ME4SE技术,J2ME应用程序可以转换成PersonalJava应用程序然后在PersonalJava环境测试.在iPAQ3760上我们同时使用Jeode和IBM J9环境来测试我们的基准程序.
在Palm m125,我们用了两个不同的J2ME虚拟机:
1.Sun的MIDP for Palm OS 1.0,可以从Sun的网站下载 2.IBM的J9 VM for Palm,在IBM WebSphere Studio Device Developer 4.0(可以**下载)自带这里我们列举了内置J2ME(MIDP1.0)的移动设备的最低硬件要求:
Java version: CLDC 1.0 + MIDP 1.0 Memory needed: 128 KB of nonvolatile memory for MIDP components, 8 KB of nonvolatile memory for application-created persistent data, 32 KB volatile memory for Java runtime Screen size: 96 x 54 pixels Display depth: 1 bit Pixel shape: 1:1 Networking: Two-way, wireless, with limited bandwidth Input: One or more of the following: one-handed keyboard, two-handed keyboard, touch screen第二部分:测试步骤
测试步骤
因为不同的设备有不同的硬件配置、操作系统和Java实现平台,我们提供一个一般的标准和相关的应用程序来测试和比较各种各样的J2ME设备的性能。我们定义了基准的两个不同层次:核心层次和应用层次。核心层次:
我们拿出一个具有普遍意义的主意:看看这些J2ME虚拟机在执行常见的通用指令的时候所消耗的时间,这些指令有:逻辑比较、循环、方法调用、比较API调用等,对于这些低层次的指令,这里我们只考虑它们的速度性能。这些核心层次的测试是与应用程序无关的。应用层次:
我们有一个普遍性的想法:看看不同的J2ME设备在运行常见的应用接口的时候所消耗的时间,例如在显示屏上绘制一张图片、打开一个HTTP连接、在本地文件系统储存数据、解析XML文档等。因为有些会消耗更多的内存,所以在定制基准中我们会给出内存使用信息。然而,因为不同的J2ME设备在内存占用原理方面几乎没有什么不同的,所以在确定的基准程序中我们不再考虑内存问题。我们只对通用的J2ME平台性能设定基准,而不对个别的应用程序的性能或对应用程序的瓶颈做优化而设定的基准。但应用程序开发者可以通过了解我们的基准测试来比较那些占用更多处理器时间和堆栈大小的程序。开发者可以通过这些基准来判断那些内嵌有J2ME平台的设备的性能。
很多公司为Java性能定义了一些基准程序策略(有些是**的,有些则不是),大部分是用来测试桌面和服务器端的运行环境的,有些还提供了功能强大的工具,例如支持线程管理。在我们的标准中,我们会沿用基准的通用程序,还会用到典型的测试域。
在核心层次的测试中,我们选用了J2SE基准程序的通用测试域,同时还会加上一些我们自己的。在每一个测试域中,我们执行一个带有一小段测试代码的循环语句,从结果中我们就可以获得其速度(循环次数/秒),我们建立了一个名为JKernelMark(version1。0,10kb)的应用程序来作为核心层次的基准程序。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-127008/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10294527/viewspace-127008/