![面向普適計算終端的Java虛擬機(jī)性能優(yōu)化技術(shù)研究_李允_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/26/15a6632a-7c83-4d29-837f-979db9efd1b8/15a6632a-7c83-4d29-837f-979db9efd1b81.gif)
![面向普適計算終端的Java虛擬機(jī)性能優(yōu)化技術(shù)研究_李允_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/26/15a6632a-7c83-4d29-837f-979db9efd1b8/15a6632a-7c83-4d29-837f-979db9efd1b82.gif)
![面向普適計算終端的Java虛擬機(jī)性能優(yōu)化技術(shù)研究_李允_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/26/15a6632a-7c83-4d29-837f-979db9efd1b8/15a6632a-7c83-4d29-837f-979db9efd1b83.gif)
![面向普適計算終端的Java虛擬機(jī)性能優(yōu)化技術(shù)研究_李允_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/26/15a6632a-7c83-4d29-837f-979db9efd1b8/15a6632a-7c83-4d29-837f-979db9efd1b84.gif)
![面向普適計算終端的Java虛擬機(jī)性能優(yōu)化技術(shù)研究_李允_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/26/15a6632a-7c83-4d29-837f-979db9efd1b8/15a6632a-7c83-4d29-837f-979db9efd1b85.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、面向普適計算終端的Java虛擬機(jī)性能優(yōu)化技術(shù)研究*李允1,羅蕾2,雷昊峰2,熊光澤2(1. 西南交通大學(xué)計算機(jī)與通信工程學(xué)院,四川成都610031;2.電子科技大學(xué)計算機(jī)科學(xué)與工程學(xué)院,四川成都610054)摘要:分析了解釋運(yùn)行中利用線索化方法進(jìn)行性能優(yōu)化的技術(shù),實現(xiàn)了以直接線索化方法為基礎(chǔ)的Java虛擬機(jī)的解釋器性能優(yōu)化方案,并對嵌入式Java虛擬機(jī)的參考實現(xiàn)和Java的優(yōu)化實現(xiàn)進(jìn)行了性能對比。關(guān)鍵詞:普適計算;Java虛擬機(jī);線索化方法;直接線索化方法;性能優(yōu)化中圖法分類號:TP316;TP273文獻(xiàn)標(biāo)識碼:A文章編號:1001-3695(2005)03-0055-03Performanc
2、eOptimization Technology JavaVirtualMachine forPervasive ComputingTerminalsLIYun1,LUO Lei2,LEIHao-feng2,XIONG Guang-ze2(1.SchoolofComputerCommunicationsEngineering,SouthwestJiaotongUniversity,Chengdu Sichuan610031,China;2.SchoolofComputerScienceEngineering,University ofElectronic ScienceTechnology,C
3、hengdu Sichuan610054,China)Abstract:The paperanalyzes a performance optimization technology uses the threadedmethod in interpreting runningmodesand implements a performance optimization ofJavaVM based on direct threaded technology. The paperdemonstrates the com-parison performance ofembedded JavaVM
4、and optimizedVM based on the reference implementation of J2ME.Key words:Pervasive Computing;JavaVM;ThreadedMethod;DirectThreadedMethod;PerformanceOptimization1引言隨著計算機(jī)技術(shù)的深入發(fā)展,逐漸呈現(xiàn)出了普適計算的模式1,2。普適計算的目的在于突破基于桌面系統(tǒng)的計算模式,使人們能夠在任何情況下獲得計算服務(wù)。在普適計算模式下,PDA和移動電話、家用電器等通用設(shè)備,以及用于醫(yī)療、軍事、娛樂等方面的專用設(shè)備將協(xié)同工作,以快速、高效和便捷的模式為人
5、們提供服務(wù)。Java由于其平臺無關(guān)特性及其龐大的應(yīng)用開發(fā)團(tuán)隊等顯著特點,逐漸在移動終端領(lǐng)域形成了強(qiáng)大的需求,Java技術(shù)本身也被稱為普適Java(Pervasive Java)。為滿足服務(wù)使用的便捷性,普適計算設(shè)備應(yīng)該能夠工作于移動環(huán)境。因此,與固定設(shè)備相比,普適計算設(shè)備主要具有資源有限等局限性。資源有限性主要是由于終端在設(shè)計方面存在以下需求:功耗低,重量輕和物理尺寸比較小。根據(jù)這些需求設(shè)計出來的設(shè)備所擁有的資源在以下方面存在不足:磁盤容量、物理內(nèi)存大小、處理能力、緩存大小和屏幕大小。盡管隨著技術(shù)的發(fā)展,普適計算終端的資源會得到不斷增強(qiáng),但固定設(shè)備同樣也能從技術(shù)發(fā)展中獲益,且固定設(shè)備不用考慮大
6、小、功耗和重量等約束3。因此,資源有限性是普適計算終端的固有特性,技術(shù)的發(fā)展過程也不能彌補(bǔ)它與固定設(shè)備之間的差距。為此,形成了針對移動終端的、適合于嵌入式應(yīng)用的Java技術(shù)J2ME。但對于日益增長的復(fù)雜應(yīng)用來說,J2ME仍要求終端具有比較豐富的資源。因此,對終端的Java進(jìn)行性能優(yōu)化,不但能降低Java對資源的需求,滿足更廣泛普適應(yīng)用的需要,還能有效降低Java應(yīng)用的功耗情況,并使普適計算終端進(jìn)行電子商務(wù)、電子銀行和3D游戲等復(fù)雜應(yīng)用成為可能。由于解釋運(yùn)行的虛擬機(jī)存在系統(tǒng)簡單、容易實現(xiàn)等優(yōu)勢,且由于編譯運(yùn)行存在重復(fù)編譯、編譯過程需要消耗大量資源等方面的不足,使得嵌入式應(yīng)用中大多采用Java的解
7、釋運(yùn)行方式。2基于解釋執(zhí)行的線索化優(yōu)化技術(shù)在程序的解釋執(zhí)行中,通常在解釋器中采用Switch-case的解釋處理方式,如下程序段通過Switch-case方式實現(xiàn)的解釋器比較簡單,易于移植和理解,但由于不少指令的解釋程序比較簡單(只有幾條到十幾條機(jī)制指令),使得Switch-case語句本身的執(zhí)行開銷太大,直接影響到解釋執(zhí)行的效率。uint8 bytecodes=OP LDC,OP ILOAD,OPADD,OP ISTORE,.;uint8*pc=bytescodes;while(notEnd)switch(*pc+)caseOP LDC:interpretLDC;break:caseOP I
8、LOAD:interpret ILOAD;break;caseOP ISTORE:interpret ISTORE;break;caseOPADD:interpretADD;break;2. 1線索化的解釋器作為對傳統(tǒng)的Switch-case解釋執(zhí)行方式的改進(jìn),線索化的解釋器4,5(Threaded Interpreter)最早在Forth語言解釋器中得到應(yīng)用。線索化的解釋器意味著解釋器對相鄰字節(jié)碼的解釋執(zhí)行過程通過一定的方式直接聯(lián)系在一起,而Switch-case解釋器每解釋完一條字節(jié)碼都要重新經(jīng)過由Switch進(jìn)行解釋分發(fā)的過程。在C /C+語言中,可以用Goto語句跳轉(zhuǎn)到特定的標(biāo)號。雖然
9、Goto語句在結(jié)構(gòu)化編程和面向?qū)ο缶幊痰倪^程中都不提倡使用,但在實現(xiàn)解釋器時,Goto語句卻可以發(fā)揮獨到的作用。通常,Goto跳轉(zhuǎn)的地址在編譯時就已經(jīng)確定,不過,大多數(shù)C語言的編譯器允許在程序中對標(biāo)號尋址,使得Goto語句的跳轉(zhuǎn)地址可以在運(yùn)行時動態(tài)確定,如下程序段:void*labels=label1,label2,label3;label1:label2:label3:goto labels1;/*跳轉(zhuǎn)到label2*/goto labels1;/*跳轉(zhuǎn)地址動態(tài)決定,i=0時跳轉(zhuǎn)到label1,以此類推*/線索化解釋器正是基于這種特性,將所有字節(jié)碼對應(yīng)的解釋程序的標(biāo)號地址保存在一個標(biāo)號數(shù)組中
10、。然后,解釋器以字節(jié)碼的值作為標(biāo)號數(shù)組的下標(biāo),直接跳轉(zhuǎn)到對應(yīng)的解釋程序。在每個字節(jié)碼解釋執(zhí)行完畢后,直接跳轉(zhuǎn)到下一條字節(jié)碼對應(yīng)的解釋程序。如下的偽碼表示了線索化解釋器的工作過程:#defineOP LDC0 uint8*pc=bytescodes;#defineOP ILOAD1 goto*labels*pc+#defineOP ISTORE 2#defineOPADD3 OP LDC LABEL:#defineOP SUB4interpretLDC; goto*labels*pc+;uint8 bytecodes=OP ILOAD LABEL:OP LDC, interpret ILOAD;
11、OP ILOAD, goto*labels*pc+;OPADD OP ISTORE LABEL:Op ISTORE, interpret ISTORE; goto*labels*pc+;OPADD LABEL:void*labels= interpretADD;OP LDC LABEL,/*OP LDC=0*/goto*labels*pc+;OP ILOAD LABEL,/*OP ILOAD=1*/ OP SUB LABEL:OP ISTORE LABEL,/*OP ISTORE=2*/interpretSUB;OPADD LABEL,/*OPADD=3*/goto*labels*pc+;OP
12、 SUB LABEL,/*OP SUB=4*/;與Switch-case解釋器相比,線索化解釋器省掉了以下的開銷:每條字節(jié)碼解釋完畢后,到Switch的跳轉(zhuǎn)指令;Switch在查找跳轉(zhuǎn)表之前對字節(jié)碼的值進(jìn)行邊界檢查的指令。并且,由于許多常用字節(jié)碼本身的解釋程序很短(甚至不到10條機(jī)器指令),線索化解釋器的優(yōu)化效果相當(dāng)明顯。另外,線索化解釋器也沒有增加內(nèi)存占用上的開銷。通過實際的實驗驗證,線索化解釋器的運(yùn)行速度比Switch-case解釋器快7%10%。2. 2直接線索化的解釋器線索化解釋器將字節(jié)碼的處理程序的入口地址集中保存在標(biāo)號數(shù)組中,解釋執(zhí)行字節(jié)碼時需要至少兩次內(nèi)存訪問:讀入PC指向的字節(jié)
13、碼;以字節(jié)碼作為下標(biāo),讀入對應(yīng)的處理程序的地址。直接線索化解釋器5(DirectThreaded Inter-preter)為對線索化解釋器的一種改進(jìn)方案。在運(yùn)行字節(jié)碼之前將所有字節(jié)碼所對應(yīng)的處理程序的地址保存在一個數(shù)組中。在解釋運(yùn)行時不再訪問原來的字節(jié)碼數(shù)組,而是直接訪問地址數(shù)組,因而在線索化解釋器的基礎(chǔ)上減少了一次內(nèi)存訪問的開銷。直接線索化解釋器的實現(xiàn)可以用如下所示的偽碼表示:#defineOP LDC0 void*instructionLabel=labels0;#defineOP ILOAD1 goto*instructionLabel+;#defineOP ISTORE 2 OP L
14、DC LABEL:#defineOPADD3interpretLDC;#defineOP SUB4goto*instuction Label+;OP ILOAD LABEL:uint8 bytecodes= interpret ILOAD;OP LDC, goto*instuction Label+;OP ILOAD,OP ISTORE LABEL:OPADDinterpret ISTORE;Op ISTORE, goto*instuction Label+;OPADD LABEL:; interpretADD;void*labelssizeof(bytecodes); goto*instuc
15、tion Label+;labels0=OP LDC LABEL;/*對應(yīng)bytecodes0=OP LDC*/OP SUB LABEL:labels1=OP ILOAD LABEL;/*對應(yīng)bytecodes1OP ILOAD*/interpretSUB;labels2=OPADD LABEL;/*對應(yīng)bytecodes2OPADD*/goto*instuction Label+;labels3=OP ISTORE LABEL;/*對應(yīng)bytecodes3OP ISTORE*/與Switch-case解釋器執(zhí)行過程相比,直接線索化解釋器減少的開銷包括一次跳轉(zhuǎn),一次訪存和對字節(jié)碼的值進(jìn)行的邊界
16、檢查操作。通過實際的實驗結(jié)果表明,直接線索化解釋器的速度比Switch-case解釋器快40%100%。但是,由于需要額外的內(nèi)存空間來存放解釋程序的地址數(shù)組,直接線索化解釋器的內(nèi)存開銷要大于Switch-case解釋器和線索化解釋器(需要約4倍于字節(jié)碼自身大小的內(nèi)存空間)。直接線索化解釋器在每條字節(jié)碼解釋完后仍然需要一條跳轉(zhuǎn)指令,轉(zhuǎn)到下一條字節(jié)碼對應(yīng)的解釋程序入口。這樣頻繁的跳轉(zhuǎn)對CPU的指令Cache和分支預(yù)測機(jī)構(gòu)仍然會帶來很大的影響。內(nèi)聯(lián)線索化的解釋器6(Inlined Threaded Interpreter)為直接線索化解釋器的改進(jìn)方案,將若干連續(xù)字節(jié)碼對應(yīng)的解釋程序本身(而不是標(biāo)號)
17、復(fù)制到一個連續(xù)的地址空間中,然后運(yùn)行這一段解釋程序,這樣就完全消除了在字節(jié)碼解釋程序間的訪存和跳轉(zhuǎn)指令的開銷??梢钥闯?內(nèi)聯(lián)線索化解釋器以一種簡化的方式實現(xiàn)了類似JIT的代碼生成工作。其代價是需要占用大量的內(nèi)存(需要約數(shù)十倍于字節(jié)碼自身大小的內(nèi)存空間)。3普適計算終端Java虛擬機(jī)性能優(yōu)化技術(shù)3. 1直接線索化優(yōu)化采用直接線索化解釋器作為Java虛擬機(jī)解釋器的核心實現(xiàn)方案,其原因是:Switch-case方式實現(xiàn)的字節(jié)碼解釋器性能過于低下;線索化解釋器與Switch-case解釋器相比性能有一定提高(7%10%),但提高幅度仍然有限;內(nèi)聯(lián)線索化解釋器與Switch-case解釋器相比性能有很大
18、提高(150%300%),但內(nèi)存占用太大;直接線索化解釋器與Switch-case解釋器相比性能有顯著提高(40%100%),同時仍然保持較少的內(nèi)存占用。解釋器在運(yùn)行字節(jié)碼之前把字節(jié)碼數(shù)組翻譯為直接包含字節(jié)碼對應(yīng)解釋程序入口的線索化代碼數(shù)組,如圖1所示。實現(xiàn)以上翻譯過程的代碼可以用如下偽碼表示(翻譯程序按順序讀入每一個字節(jié)碼,查找其對應(yīng)的解釋程序入口地址,再將地址寫入線索化代碼數(shù)組中):void*opcode entriesMAX OPCODE;/*保存字節(jié)碼解釋程序入口地址*/*初始化解釋程序入口地址表*/opcode entriesOP CODE1=OP1ENTRY;opcode entr
19、iesOP CODE2=OP2ENTRY;opcode entriesOP CODE3=OP3ENTRY;/*將字節(jié)碼翻譯為threaded code*/uint8*pc=bytecodes;intbytecodes length=length ofbytecodes;void* *threadedPC=threadedCodes;while(bytecodes length-)if(ISOPCODE(*pc)/*該字節(jié)是操作碼,翻譯為解釋程序入口地址*/*threadedPC=opcode entries*pc;else/*該字節(jié)是操作碼的參數(shù),直接保存*/*threadedPC=*pc;t
20、hreadedPC+;pC+;實際上,圖1和上述的偽碼只考慮了最簡單的字節(jié)碼翻譯過程,即每個字節(jié)碼對應(yīng)線索化代碼的一條數(shù)據(jù)(通常為4字節(jié)),其中操作碼對應(yīng)翻譯程序標(biāo)號地址,操作碼后續(xù)的操作數(shù)則直接復(fù)制到線索化代碼中。無論是操作碼還是操作數(shù),每一個字節(jié)碼在翻譯后都要占用4字節(jié)的存儲空間。在實際的翻譯過程中,有兩個問題需要解決:操作數(shù)的翻譯;相對跳轉(zhuǎn)地址的處理。在32位CPU上,標(biāo)號地址(類型為void*)長度為32位,占用四個字節(jié)的存儲器。一條Java操作碼的后續(xù)操作數(shù)長度從一字節(jié)到數(shù)十字節(jié)不等,這些操作數(shù)有的是16位整數(shù),長為兩個字節(jié);有的是32位整數(shù),長為四個字節(jié)。如果按照跳轉(zhuǎn)地址動態(tài)確定的
21、翻譯方式,16位的操作數(shù)在翻譯后將占用兩個線索化代碼單元,即八個字節(jié);而32位操作數(shù)則要占用16個字節(jié)。并且,在線索化代碼運(yùn)行時,還需要重新組裝這些操作數(shù)。這樣做既增加了無謂的內(nèi)存占用,又降低了運(yùn)行效率。因此,在翻譯過程中,通常是將一個操作數(shù)的若干個字節(jié)碼合并在一條線索化代碼單元中,如圖2所示。如圖2所示,在翻譯時對字節(jié)碼操作數(shù)進(jìn)行合并處理,可以在一定程度上降低線索化代碼的內(nèi)存占用,同時提高了運(yùn)行效率??梢钥闯?合并操作數(shù)使得字節(jié)碼數(shù)組與線索化代碼數(shù)組的下標(biāo)不再具有一一對應(yīng)關(guān)系。對順序執(zhí)行的字節(jié)碼而言,這種變化沒有影響,但對于進(jìn)行相對地址跳轉(zhuǎn)的字節(jié)碼而言,情況就發(fā)生了變化。以圖2為例,假設(shè)字節(jié)
22、碼數(shù)組中下標(biāo)為2的OP_CODE2是一條跳轉(zhuǎn)指令,其后的操作數(shù)是相對地址,值為8,則OP_CODE2的執(zhí)行結(jié)果為跳轉(zhuǎn)到下標(biāo)為10的指令處。而在線索化代碼中,OP_CODE2的解釋程序則應(yīng)該跳轉(zhuǎn)到對應(yīng)的指令,即下標(biāo)為6的線索化代碼處。因此,在對跳轉(zhuǎn)指令進(jìn)行翻譯時,必須對操作數(shù)進(jìn)行調(diào)整。3. 2字節(jié)碼替換優(yōu)化字節(jié)碼替換主要包括以下幾個方面的內(nèi)容:(1)將某些不指定操作數(shù)類型的指令細(xì)分并改寫為針對特定類型的指令。例如,LDC指令將常量表中指定的常量壓入Java堆棧,它的操作數(shù)(指定常量的下標(biāo))也是一個常量。在翻譯代碼時可以得知不同的LDC指令所裝入常量的數(shù)據(jù)類型,并將LDC指令細(xì)分為LDC_INT,
23、LDC_FLOAT,LDC_STRING等指令,以提高運(yùn)行效率。(2)將常量操作數(shù)直接嵌入在線索化代碼中。每一個Ja-va方法都有自己的常量表,程序運(yùn)行時通過LDC指令和一個下標(biāo)操作數(shù)來將常量表中指定的常量壓入Java堆棧。可以將長度不超過四個字節(jié)的常量直接嵌入到線索化代碼中,如整型常量、字符串指針常量等,這樣可以減少一次查表的開銷。(3)合并某些功能相近或相同的指令。例如,BIPUSH和SIPUSH指令分別向一個8位整數(shù)和16位整數(shù)壓入堆棧,考慮到8位和16位整數(shù)在線索化代碼和堆棧上實際都要占用四個字節(jié),這兩條指令可以由同一段解釋程序來執(zhí)行。3. 3線索化代碼存儲空間優(yōu)化字節(jié)碼翻譯為線索化代
24、碼后,需要占用原字節(jié)碼大小34倍的存儲空間。相對內(nèi)聯(lián)線索化解釋器而言,開銷已經(jīng)大大減小,但對于內(nèi)存資源有限的移動終端而言,這樣的開銷仍然不可忽視。線索化代碼存儲空間優(yōu)化技術(shù)即用來降低線索化代碼的內(nèi)存占用情況,其工作原理是:(1)開辟一塊專門用于存放線索化代碼的內(nèi)存空間;(2)Java方法只在被運(yùn)行之前才翻譯為線索化代碼;(3)通過LRU(最近最久未用)表對已翻譯為線索化代碼的Java方法的被調(diào)用情況進(jìn)行記錄;(4)當(dāng)存放線索化代碼的內(nèi)存空間不足以容納新的需要翻譯的Java方法時,在LRU表中查找最近最久未調(diào)用的線索化代碼,并釋放這段代碼。有必要的話,重復(fù)這個過程直到可以容納新的Java方法為止
25、。通常由于移動終端本身存儲能力的限制,Java應(yīng)用代碼的規(guī)模通常不會超過100KB,大多數(shù)常用應(yīng)用不會超過30KB40KB。在這個前提下,通過LRU表來維護(hù)線索化代碼的內(nèi)存空間,能夠大大降低線索化代碼所占用的內(nèi)存。3. 4提高CPU指令Cache命中率Java虛擬機(jī)一共定義了204條指令,這些指令在Java程序中出現(xiàn)的頻率是不一樣的。根據(jù)Radhakrishnan7的統(tǒng)計,Java程序中使用頻率最高的15條指令,其運(yùn)行次數(shù)占所有指令運(yùn)行次數(shù)的56%85%。這些使用頻率最高的指令隨程序不同而不完全一致。但總的來說,常量表訪問指令、變量表訪問指令、算術(shù)運(yùn)行指令和分支指令的使用頻率相對其他指令要高得
26、多。為此,將使用頻率高的指令的解釋程序安排在相鄰的地址空間中,可以提高CPU指令Cache的命中率,進(jìn)而改善虛擬機(jī)的性能。4性能分析Java虛擬機(jī)性能優(yōu)化是在嵌入式Java(下轉(zhuǎn)第79頁)Multi-Agent信息檢索系統(tǒng)的需求會變得日益突出,它將更加精確地滿足用戶對個性化信息的需要。它面臨的問題有:(1)MAS中學(xué)習(xí)成功的協(xié)商和協(xié)作策略;(2)Agent的適應(yīng)性何時對系統(tǒng)有害或有利;(3)多個信息Agent間的合作行為如何有效發(fā)展;(4)在開放的環(huán)境中,用于知識發(fā)現(xiàn)、表示和維持的哪些方法是最適合的。在信息Agent系統(tǒng)中,機(jī)器學(xué)習(xí)的各種技術(shù)是很有用的。最流行的學(xué)習(xí)方法類型,可以從神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)
27、中的Q學(xué)習(xí)和基于示例的推理,直到遺傳算法的學(xué)習(xí)。如:指導(dǎo)學(xué)習(xí)。由Agent收到的用戶的反饋,用于指派某個希望的活動;這個希望的活動將盡可能近地與學(xué)習(xí)目標(biāo)相匹配。非指導(dǎo)學(xué)習(xí)。這種情況是無用戶的反饋,而是通過自組織的過程、學(xué)習(xí)目標(biāo)來發(fā)現(xiàn)有用的和希望的活動。再勵學(xué)習(xí)。通過用戶的反饋來說明Agent執(zhí)行的活動的效用,學(xué)習(xí)的目標(biāo)就是如何將這種效用最大化。今后的工作將把各種學(xué)習(xí)算法以及各種信息技術(shù)應(yīng)用于MAS中,比較各種方法的效用,找出最適合的那些方法,以提高系統(tǒng)的精確性和效率,更好地滿足用戶的需要。參考文獻(xiàn):1TravisBauer-David B Leake. Calvin:AMulti-AgentP
28、ersonal Infor-mation RetrievalSystemEB /OL. http:/www. cs. Indiana. edu /trbauer/papers /agents02,2002.2M Klusch. InformationAgentTechnology for the Internet:A SurveyJ. DataKnowledge Engineering,2001,36(3):337-372.3Keith LClark,Vasilios S Lazarou. AMulti-AgentSystem forDis-tributed Information Retri
29、eval on theWorldW ideWebC. Procee-dings of the 6thWorkshop on EnablingTechnologies Infrastructure forCollaborative Enterprises(WET-ICE97),1997. 87-93.4TsviKuflik,PeretzShova.l Generation ofUserProfiles for InformationFiltering Research AgentC. Proceedings of the 23rd Annual Inter-nationalACM SIGIR C
30、onference on Research and Development in In-formation Retrieval(SIGIR 2000),SIGIR-2000,2000. 313-315.5Suat Ugurlu,Nadia Erdogan. An Agent-based Information RetrievalSystemC. Proceedings of the 1st International Conference ofAd-vances in Information Systems(ADVIS-2000),2000. 429-436.6Bin Ling,Colin A
31、llison. An Agent-based Knowledge SharingModelfor Information Retrieval on the InternetC. Proceedings of the 3rdInternationalConference on Enterprise Information Systems(ICEIS-2001),2001. 1118-1125.7董紅斌,石純一.移動Agent技術(shù)研究J.計算機(jī)科學(xué),2000,27(4):58-61.8董紅斌,孫羽.多Agent系統(tǒng)的現(xiàn)狀與進(jìn)展J.計算機(jī)應(yīng)用研究,2001,18(1):54-56.作者簡介:侯薇(1
32、973-),女,黑龍江望奎人,碩士研究生,主要研究領(lǐng)域為多Agent系統(tǒng);董紅斌(1963-)男,河北唐山人,副教授,碩士生導(dǎo)師,主要研究領(lǐng)域為分布式人工智能應(yīng)用基礎(chǔ)。(上接第57頁)J2ME參考實現(xiàn)的基礎(chǔ)上來實現(xiàn)的,并進(jìn)行了實際測試用例的性能分析工作。限于篇幅,從中選取了部分操作的性能數(shù)據(jù),如表1所示。測試是在運(yùn)行于x86 PC工作站的Linux操作系統(tǒng)上進(jìn)行的,工作站裝備了1GHz主頻的CeleronCPU和512MB RAM。從性能測試的結(jié)果來看,采用了優(yōu)化技術(shù)實現(xiàn)的Java虛擬機(jī)的性能比參考實現(xiàn)獲得了明顯的提高。表1性能比較操作類型循環(huán)執(zhí)行次數(shù)執(zhí)行時間(ms)J2ME參考實現(xiàn)優(yōu)化后訪問
33、字節(jié)數(shù)組3 200 000 2 749 1 398字節(jié)數(shù)據(jù)加法運(yùn)算3 200 000 853 452串比較800 000 245 190異常處理6 400 000 2945 2 297對象之間的轉(zhuǎn)換6 400 000 1 527 767整型到字節(jié)型轉(zhuǎn)換6 400 000 1 238 611整型到長整型轉(zhuǎn)換6 400 000 1 234 7035結(jié)束語普遍認(rèn)為,Java是能夠適應(yīng)普適計算的關(guān)鍵技術(shù),并已經(jīng)在目前的智能手機(jī)等移動終端領(lǐng)域形成了比較廣泛的應(yīng)用需求。由于普適計算終端的多樣性和資源有限性,要使Java能夠適應(yīng)普適計算的需要,需要對Java進(jìn)行一定的性能優(yōu)化,以降低Java對資源的需求,滿
34、足更廣泛普適應(yīng)用的需要,并有效降低Java應(yīng)用的功耗情況,使普適計算終端進(jìn)行電子商務(wù)、電子銀行和3D游戲等復(fù)雜應(yīng)用成為可能。本文詳細(xì)分析了基于線索化方法的解釋器優(yōu)化技術(shù),并在Java虛擬機(jī)中實現(xiàn)了基于直接線索化的解釋器優(yōu)化方案。文中對Java虛擬機(jī)的直接線索化優(yōu)化方案進(jìn)行了詳細(xì)描述,并采用了字節(jié)碼替換、提高CPU指令Cache命中率等執(zhí)行時間優(yōu)化措施和基于線索化代碼的存儲空間優(yōu)化技術(shù)。通過性能對比,說明了優(yōu)化后的Java虛擬機(jī)解釋器的性能得到了比較顯著的提高,并正在用于實際的智能手機(jī)產(chǎn)品應(yīng)用。為進(jìn)一步提高性能,也正在考慮把部分對整體性能影響較大的內(nèi)容通過芯片掩膜的方式來實現(xiàn)。通過性能優(yōu)化,使Java能更好地適應(yīng)普適計算的發(fā)展,進(jìn)一步拓寬了Java的應(yīng)用范圍。參考文獻(xiàn):1RandyH K
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑工程項目施工總承包合同
- 承債式公司股權(quán)轉(zhuǎn)讓協(xié)議
- 站臺裝修勞務(wù)合同
- 房屋出租合同協(xié)議書
- 債轉(zhuǎn)股投資合同協(xié)議書
- 裝修材料采購合同
- 二婚離婚協(xié)議書新
- 電商行業(yè)網(wǎng)絡(luò)購物服務(wù)協(xié)議
- 影視內(nèi)容版權(quán)采購協(xié)議
- 手房買賣合同官方
- 高空作業(yè)安全方案及應(yīng)急預(yù)案
- 關(guān)于與旅游發(fā)展集團(tuán)成立合資公司的可行性研究報告
- 第一部分-氣排球運(yùn)動介紹課件
- 世界局勢與主再來課件
- 思維游戲(小孩都喜歡玩的游戲)教學(xué)內(nèi)容課件
- 儲能技術(shù)課后參考答案梅生偉
- 過渡金屬氧化物催化劑及其催化作用
- 溫濕度對果蔬儲存的影響
- 遺傳性耳聾基因檢測標(biāo)準(zhǔn)Ppt
- 電是怎么產(chǎn)生的
- 八-十-天-環(huán)-游-地-球(讀書)專題培訓(xùn)課件
評論
0/150
提交評論