国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

J2ME設備的實際性能

2019-11-18 16:05:35
字體:
來源:轉載
供稿:網友

  J2ME設備的實際性能
性能標準可以幫助開發者開發出更好的應用程序

摘要
設備的性能可以幫助開發者開發出能讓用戶有好的體驗的應用.了解性能可以幫助開發者了解每種設備的優缺點以及為具體設備開發合適的應用.進行性能測試是從底層來評價設備的.這篇文章是描述的是關于現有一些的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)的應用程序來作為核心層次的基準程序。

在應用層次的測試中,我們先定義了一些測試域,在每個測試域里我們執行帶有一段測試代碼的方法,從結果中就可以得到速度(每執行一次的毫秒數)。我們根據不同的J2ME API制作了不同的基準程序,為J2ME標準API制作了JAppsMark(version1。0 14KB)程序,為第三方API,例如關于XMLParse的,我們用kXML制作了JXMLMark程序(version1。0 21KB)來測試XML解析。

基準程序的細節
每一個基準程序都會用一個MIDlet來執行,下面解釋我們在測試中用到的每一個基準程序。

JKernelMark
JKernelMark測試的有:

過濾:這是一個在給定數學公式和條件的情況下可以得到精確的結果的算法.

循環:JKernelMark測試虛擬機對循環優化到什么程度.這是一個能輸出精確的表達式循環的結果.基準程序將這個結果放到一個數組中,并顛倒了數組的排列順序.

邏輯運算:JKernelMark可以測試VM對邏輯結果的運算速度.JKernelMark創建了很多Boolean類型的變量,并且在很多循環語句里對這些變量進行取反運算.

字符串:在這里,我們測試了VM對典型的字符串操作的運算速度.JKernelMark在一個循環結構里創建了一個StringBuffer變量,接著添加一個字符串到這個StringBuffer變量去,并且準確指明新字符串的位置.

方法:JKernelMark測試VM在處理方法調用的時候的速度.它是通過計算遞歸函數總共需要的時間的.

內存分配與垃圾回收:這里,JKernelMark測試內存分配的速度以及垃圾回收對性能的影響有多大.它連續地在內存里創建新的對象和字節數組(每個循環大約要在堆棧里創建20KB的對象)如果內存不夠的話,系統會開始回收垃圾同時會明顯的影響創建新對象的速度.

JKernelMark 得分標志:每秒循環的次數;得分越高說明性能越好.

JAppsMark
JappsMark測試的內容用:

網絡通信:用Java手機通過HTTP連接到一個Web系統,并且從響應中讀取200byte的信息,同時記錄下總共所消耗的時間.測試的執行時間也包括了網絡的延遲.如果測試失敗,我們記錄為測試失敗.盡管一部手機內嵌了J2ME,但你還是需要一張能提供數據服務的GSM或GPRS的SIM卡.當然也有其它方法來配置J2ME設備來完成這種測試,這里不作介紹.例如你可以直接把手機與PC連接起來.

低層的圖形用戶界面(Low-level GUI):JAppsMark測試了Java手機在屏幕上繪圖的性能.這個測試是通過加載一個圖片文件并隨機在一個250象素的canvas描繪出來,并記錄不同的設備子完成這個程序所消耗的時間.

RMS (record management system):關于RMS測試,是用一個MIDP程序創建一個record store,增加一條記錄,從新返回RecordStore對象,通過反復地記錄,最終刪除這個record store,并記錄不同設備在完成這個過程所消耗的時間.

線程轉換:JAppsMark測試VM在線程轉換方面的速度.

JAppsMark的得分表明:每運行一次的毫秒數;這個數字越小,性能就越好.

JXMLMark
XML解析在J2ME里是很有趣的,J2ME還沒有標準的XML相關的API.因為普通的XML解析相對于移動設備來說顯得太笨重了,包括運行時性能、用戶的感覺、代碼的大小等性能參數在J2ME的XML解析里就顯得十分重要了。

有三個方法可以解析XML:

1、原型解析讀入整個文件,并且在內存里創建一個文件的映射。原型解析比其它類型的解析占用的內存多得多。
2、推動式解析雖然也是讀入整個文件,但是它把文件分成很多部分,并且連接了一個對象監聽器。這就是流行的SAX (Simple API for XML)解析的運作原理。
3、拉式解析每次只讀取文件的一小部分,應用程序通過反復的請求讓整個文件被解析。

盡管MIDP 1.0沒有包括XML解析,由于XML的重要性,Sun打算在MIDP2.0里添加一個能夠實現跨平臺數據交換的微型且高效的XML解析器。

在輕量型的XML解析器中,kXML是最流行并且使用標準XML解析API,能在MIDP環境運行的XML解析器之一。

因此我們把kXML作為XML解析的基準速度的基本的API。我們使用的是kXML1.21,因為kXML 2.0還在alpha測試中(我們設計我們的程序的時候)。

因為內存有限,所以J2ME移動設備只能解析很小的XML文件。我們創建了一個簡小的XML文件作為我們的基準,如下所示。DTD (document type definition)不是必要的,因為kXML不支持DTD。

<?xml version="1.0" encoding="UTF-8" ?>
<message_list>
<message>
<header>
<status>xxxStatus</status>
<command>xxxCommand</command>
<messageId>xxxMessageId</messageId>
<processingRule>xxXProcessingRule</processingRule>
</header>
<body>
<a>1</a>
<b bvalue="123" />
<c cvalue="1234">cvalue</c>
</body>
</message>
</message_list>

我們用一般的方式從頭到尾來解析這個XML文件并讀入每個標簽、每個屬性、每個值。需要更詳細的信息可以參考Jonathan Knudsen的"Parsing XML in J2ME"。

我們計算解析這個文件所需的時間(毫秒),并把這個時間作為得分。

得分的意思:每解析整個文件所需的毫秒數;這個數字越小,表明性能越好。

(出處:http://m.survivalescaperooms.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 静宁县| 康保县| 龙陵县| 永和县| 神池县| 安顺市| 菏泽市| 体育| 乌兰察布市| 兰溪市| 承德县| 镶黄旗| 永康市| 昔阳县| 迭部县| 水城县| 县级市| 河源市| 新邵县| 揭东县| 格尔木市| 棋牌| 商丘市| 珠海市| 临西县| 襄城县| 平凉市| 三河市| 体育| 武威市| 健康| 敦煌市| 灵山县| 宿州市| 宁武县| 湘乡市| 沧州市| 界首市| 喜德县| 东丽区| 三门县|