即時(shí)編譯參數(shù)優(yōu)化方法及裝置的制造方法
【專利摘要】本發(fā)明實(shí)施例提供一種即時(shí)編譯參數(shù)優(yōu)化方法及裝置,其中,所述方法包括:A、使用即時(shí)編譯參數(shù)的當(dāng)前值,對(duì)目標(biāo)應(yīng)用程序進(jìn)行性能測(cè)試,得到目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值;B、根據(jù)目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷目標(biāo)應(yīng)用程序的性能指標(biāo)是否收斂;若未收斂,則將即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng),得到即時(shí)編譯參數(shù)的當(dāng)前值的隨機(jī)變異值;將隨機(jī)變異值作為下一次性能測(cè)試中即時(shí)編譯參數(shù)的當(dāng)前值,再次執(zhí)行A和B;其中,步長(zhǎng)為即時(shí)編譯參數(shù)的最小單位。本發(fā)明實(shí)施例能夠提升即時(shí)編譯參數(shù)的選值準(zhǔn)確度和選擇效率,提升虛擬機(jī)的性能。
【專利說(shuō)明】
即時(shí)編譯參數(shù)優(yōu)化方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明實(shí)施例涉及虛擬機(jī)技術(shù),尤其涉及一種即時(shí)編譯參數(shù)優(yōu)化方法及裝置。
【背景技術(shù)】
[0002]虛擬機(jī)(Virtual Machine,簡(jiǎn)稱VM)通常是現(xiàn)代高性能服務(wù)器上運(yùn)行的核心軟件系統(tǒng)。虛擬機(jī)主要通過(guò)軟件(或者輔以少量硬件支持)的方法來(lái)虛擬出一臺(tái)計(jì)算機(jī),并且這臺(tái)虛擬的計(jì)算機(jī)通常還支持一套自己的指令集,稱為虛擬機(jī)指令集。虛擬機(jī)依托于本地的物理機(jī),通過(guò)其執(zhí)行引擎對(duì)給定的虛擬機(jī)指令序列(也稱目標(biāo)程序)在本地物理機(jī)器上模擬執(zhí)行。虛擬機(jī)的執(zhí)行引擎一般包括解釋器和編譯器兩種類型:解釋器以一條虛擬機(jī)指令為單位進(jìn)行取指令、譯碼和執(zhí)行;編譯器以一組連續(xù)的虛擬機(jī)指令序列(基本塊、函數(shù)或方法)為單位一次性編譯成本地CPU指令序列,所生成的本地機(jī)器指令稱為本地方法,然后由硬件直接執(zhí)行本地方法。編譯器由于避免了大量重復(fù)的取指令和譯碼的過(guò)程,同時(shí)又在編譯時(shí)進(jìn)行了大量卓有成效的優(yōu)化,因而其性能可以達(dá)到解釋器性能的10倍以上。
[0003]和傳統(tǒng)C/C++等靜態(tài)編譯不同,編譯器是在虛擬機(jī)運(yùn)行過(guò)程中進(jìn)行動(dòng)態(tài)編譯的,故又稱為即時(shí)編譯器(Just-1n-time Compiler,簡(jiǎn)稱JIT)。即時(shí)編譯算法經(jīng)過(guò)近30年的發(fā)展,現(xiàn)在已經(jīng)非常復(fù)雜,在算法中往往引入大量參數(shù)。最常用的即時(shí)編譯參數(shù)包括以下幾種:
[0004]1、熱點(diǎn)方法執(zhí)行次數(shù)的最小值:
[0005]由于即時(shí)編譯行為會(huì)影響程序的性能和響應(yīng)時(shí)間,虛擬機(jī)一般僅對(duì)執(zhí)行頻度較高的部分方法進(jìn)行編譯,這些方法稱為熱點(diǎn)方法或程序熱點(diǎn),通常根據(jù)方法執(zhí)行的次數(shù)大小來(lái)篩選熱點(diǎn)方法,這樣就引入了一個(gè)參數(shù):熱點(diǎn)方法執(zhí)行次數(shù)的最小值(記為Hot_Method_Invocat1n_Limit)。
[0006]2、方法內(nèi)部循環(huán)次數(shù)的最小值:
[0007]還有一種熱點(diǎn)方法,方法本身的執(zhí)行次數(shù)不高,但是在方法內(nèi)部有循環(huán)結(jié)構(gòu),因此也能夠成為耗時(shí)方法。這樣就引入了一個(gè)參數(shù):方法內(nèi)部循環(huán)次數(shù)的最小值(記為Hot_Loop_Invocat1n_Limit)。
[0008]3、被內(nèi)聯(lián)方法的最大體積、內(nèi)聯(lián)的最大深度:
[0009]在即時(shí)編譯的過(guò)程中,編譯器通常會(huì)使用內(nèi)聯(lián)(Inline)優(yōu)化方法。內(nèi)聯(lián)優(yōu)化是指,對(duì)于存在調(diào)用關(guān)系的兩個(gè)方法,如果方法A調(diào)用方法B,那么在編譯方法A時(shí),可以將方法B的內(nèi)容嵌入到方法A中共同編譯,這樣在執(zhí)行方法A的編譯后代碼時(shí),可以省略一次調(diào)用。內(nèi)聯(lián)優(yōu)化方法的優(yōu)點(diǎn)是節(jié)省執(zhí)行時(shí)間,但是缺點(diǎn)是增大了編譯后代碼的規(guī)模,因此,一般不允許無(wú)限制的進(jìn)行內(nèi)聯(lián)優(yōu)化。一般會(huì)引入兩個(gè)參數(shù):一個(gè)是被內(nèi)聯(lián)方法的最大體積(記為 Inline_Max_Method_Size),另一個(gè)是內(nèi)聯(lián)的最大深度(記為 Inline_Max_Depth)。
[0010]對(duì)于不同的應(yīng)用程序,即時(shí)編譯參數(shù)的不同取值會(huì)影響虛擬機(jī)的最終性能,因此如何高效地選擇即時(shí)編譯參數(shù)的最優(yōu)值成為亟待解決的問(wèn)題。
[0011]—種常見(jiàn)的即時(shí)編譯參數(shù)優(yōu)化方案是:虛擬機(jī)定義即時(shí)編譯參數(shù)的默認(rèn)值。由虛擬機(jī)的編寫者考察實(shí)際中絕大多數(shù)應(yīng)用程序的特點(diǎn),人為選擇一個(gè)盡可能適用于大多數(shù)情況的參數(shù)值。例如在虛擬機(jī)OpenJDK中,默認(rèn)將Hot_Method_Invocat1n_Limit定義為1500,Inline_Max_Method_Size定義為35。但是,設(shè)置并采用默認(rèn)值的方案存在如下缺陷:現(xiàn)實(shí)的應(yīng)用程序千差萬(wàn)別,默認(rèn)值無(wú)法保證對(duì)所有應(yīng)用程序都是最優(yōu)的。尤其是對(duì)于用戶的新應(yīng)用程序,很可能不能運(yùn)行出最好效果。例如,針對(duì)標(biāo)準(zhǔn)測(cè)試集SpecJVM2008,對(duì)于測(cè)試項(xiàng)sunflow,如果把參數(shù)Hot_Method_Invocat1n_Limit由默認(rèn)值1500改為1600,則性能能夠有10%的提升;而對(duì)于測(cè)試項(xiàng)mpegaud1,只有把參數(shù)Hot_Method_Invocat1n_Limit設(shè)置為1700,才能運(yùn)行出最好的性能??梢?jiàn),對(duì)于不同的應(yīng)用程序,即時(shí)編譯參數(shù)的最優(yōu)值并不一定相同。
[0012]另一種常見(jiàn)的即時(shí)編譯參數(shù)優(yōu)化方案是:用戶通過(guò)遍歷即時(shí)編譯參數(shù)的所有可能值以確定最優(yōu)值。用戶每次將選擇的值輸入到虛擬機(jī)中,虛擬機(jī)按照用戶選擇的值執(zhí)行,例如,針對(duì)標(biāo)準(zhǔn)測(cè)試集SpecJVM2008,如果用戶運(yùn)行測(cè)試項(xiàng)mpegaud1,則用戶通過(guò)大量測(cè)試,遍歷 Hot_Method_Invocat1n_Limit 的所有可能值,找到 Hot_Method_Invocat1n_Limit的最優(yōu)值1700,把這個(gè)值輸入到虛擬機(jī)中,在此過(guò)程中每次即時(shí)編譯參數(shù)的取值固定的變化一個(gè)單位。這種方法的缺點(diǎn)是,由于每個(gè)即時(shí)編譯參數(shù)的取值范圍都很大,例如,僅對(duì)Hot_Method_Invocat1n_Limit這一個(gè)參數(shù)來(lái)講,這是一個(gè)整數(shù),理論上有無(wú)限多種取值,用戶只能選擇有限的一些樣本值來(lái)進(jìn)行實(shí)驗(yàn),例如選擇100的整數(shù)倍,S卩100、200、……、1600、1700、……,等等,即使簡(jiǎn)化了樣本點(diǎn),也仍然要進(jìn)行幾十組測(cè)試。而SpecJVM2008運(yùn)行一次要4個(gè)小時(shí),總的時(shí)間至少要幾天,并且,實(shí)際中,即時(shí)編譯參數(shù)的個(gè)數(shù)非常多,為了找到最優(yōu)值需要進(jìn)行組合測(cè)試,其工作量更是巨大的,對(duì)用戶的代價(jià)過(guò)高。
【發(fā)明內(nèi)容】
[0013]本發(fā)明實(shí)施例提供一種即時(shí)編譯參數(shù)優(yōu)化方法及裝置,以提升即時(shí)編譯參數(shù)的選值準(zhǔn)確度和選擇效率,提升虛擬機(jī)的性能。
[0014]第一方面,本發(fā)明實(shí)施例提供一種即時(shí)編譯參數(shù)優(yōu)化方法,其中,所述方法包括:
[0015]A、使用即時(shí)編譯參數(shù)的當(dāng)前值,對(duì)目標(biāo)應(yīng)用程序進(jìn)行性能測(cè)試,得到所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值;
[0016]B、根據(jù)所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)是否收斂;
[0017]若未收斂,則將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng),得到所述即時(shí)編譯參數(shù)的當(dāng)前值的隨機(jī)變異值;將所述即時(shí)編譯參數(shù)的當(dāng)前值的隨機(jī)變異值作為下一次性能測(cè)試中所述即時(shí)編譯參數(shù)的當(dāng)前值,再次執(zhí)行A和B;其中,所述步長(zhǎng)為所述即時(shí)編譯參數(shù)的最小單位。
[0018]根據(jù)第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)是否收斂,包括:
[0019]判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值是否超過(guò)閾值;
[0020]若是,則確定所述目標(biāo)應(yīng)用程序的性能指標(biāo)未收斂。
[0021]根據(jù)第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)是否收斂,包括:
[0022]判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值是否超過(guò)閾值;若否,并且在連續(xù)M次的性能測(cè)試中分別得到的差值都未超過(guò)所述閾值,則確定所述目標(biāo)應(yīng)用程序的性能指標(biāo)已收斂。
[0023]根據(jù)第一方面、第一方面的第一種至第二種可能的實(shí)現(xiàn)方式中的任意一種,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng),包括:根據(jù)所述即時(shí)編譯參數(shù)的啟發(fā)規(guī)則,將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng)。
[0024]根據(jù)第一方面的第三種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,若所述即時(shí)編譯參數(shù)為熱點(diǎn)方法執(zhí)行次數(shù)的最小值或方法內(nèi)部循環(huán)次數(shù)的最小值,則所述根據(jù)所述即時(shí)編譯參數(shù)的啟發(fā)規(guī)則,將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng)包括:
[0025]若所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值大于所述上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值,則將所述即時(shí)編譯參數(shù)的當(dāng)前值減少至少N個(gè)步長(zhǎng),反之,則將所述即時(shí)編譯參數(shù)的當(dāng)前值增大至少N個(gè)步長(zhǎng);
[0026]若所述即時(shí)編譯參數(shù)為被內(nèi)聯(lián)方法的最大體積或內(nèi)聯(lián)的最大深度,則所述根據(jù)所述即時(shí)編譯參數(shù)的啟發(fā)規(guī)則,將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng)包括:
[0027]若所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值大于所述上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值,則將所述即時(shí)編譯參數(shù)的當(dāng)前值增大至少N個(gè)步長(zhǎng),反之,則將所述即時(shí)編譯參數(shù)的當(dāng)前值減少至少N個(gè)步長(zhǎng)。
[0028]第二方面,本發(fā)明實(shí)施例提供一種即時(shí)編譯參數(shù)優(yōu)化裝置,其中,所述裝置包括:
[0029]性能測(cè)試模塊,用于使用即時(shí)編譯參數(shù)的當(dāng)前值,對(duì)目標(biāo)應(yīng)用程序進(jìn)行性能測(cè)試,得到所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值;
[0030]判斷模塊,用于根據(jù)所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)是否收斂;
[0031]隨機(jī)變異模塊,用于若所述判斷模塊根據(jù)所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)未收斂,則將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng),得到所述即時(shí)編譯參數(shù)的當(dāng)前值的隨機(jī)變異值;將所述即時(shí)編譯參數(shù)的當(dāng)前值的隨機(jī)變異值作為下一次性能測(cè)試中所述即時(shí)編譯參數(shù)的當(dāng)前值;其中,所述步長(zhǎng)為所述即時(shí)編譯參數(shù)的最小單位。
[0032]根據(jù)第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述判斷模塊,具體用于判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值是否超過(guò)閾值;若是,則確定所述目標(biāo)應(yīng)用程序的性能指標(biāo)未收斂。
[0033]根據(jù)第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述判斷模塊,具體用于判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值是否超過(guò)閾值;若否,并且在連續(xù)M次的性能測(cè)試中分別得到的差值都未超過(guò)所述閾值,則確定所述目標(biāo)應(yīng)用程序的性能指標(biāo)已收斂。
[0034]根據(jù)第二方面、第二方面的第一種至第二種可能的實(shí)現(xiàn)方式中的任意一種,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述隨機(jī)變異模塊,具體用于根據(jù)所述即時(shí)編譯參數(shù)的啟發(fā)規(guī)則,將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng)。
[0035]根據(jù)第二方面的第三種可能的實(shí)現(xiàn)方式,在第二方面的第四種可能的實(shí)現(xiàn)方式中,所述隨機(jī)變異模塊,具體用于:
[0036]在所述即時(shí)編譯參數(shù)為熱點(diǎn)方法執(zhí)行次數(shù)的最小值或方法內(nèi)部循環(huán)次數(shù)的最小值時(shí),若所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值大于所述上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值,則將所述即時(shí)編譯參數(shù)的當(dāng)前值減少至少N個(gè)步長(zhǎng),反之,則將所述即時(shí)編譯參數(shù)的當(dāng)前值增大至少N個(gè)步長(zhǎng);
[0037]在所述即時(shí)編譯參數(shù)為被內(nèi)聯(lián)方法的最大體積或內(nèi)聯(lián)的最大深度時(shí),若所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值大于所述上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值,則將所述即時(shí)編譯參數(shù)的當(dāng)前值增大至少N個(gè)步長(zhǎng),反之,則將所述即時(shí)編譯參數(shù)的當(dāng)前值減少至少N個(gè)步長(zhǎng)。
[0038]本發(fā)明實(shí)施例提供的即時(shí)編譯參數(shù)優(yōu)化方法及裝置,若根據(jù)所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)判定未收斂,則對(duì)即時(shí)編譯參數(shù)的當(dāng)前值進(jìn)行隨機(jī)變異,通過(guò)隨機(jī)變異將即時(shí)編譯參數(shù)的取值變化一個(gè)較大的范圍,快速的略過(guò)該較大的范圍內(nèi)的所有樣本,降低測(cè)試工作量。本發(fā)明實(shí)施例通過(guò)隨機(jī)變異的方法以更快的速度逼近即時(shí)編譯參數(shù)的最優(yōu)值,提升即時(shí)編譯參數(shù)的選值準(zhǔn)確度和選擇效率,提升虛擬機(jī)的性能。
【附圖說(shuō)明】
[0039]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0040]圖1為本發(fā)明實(shí)施例提供的即時(shí)編譯參數(shù)優(yōu)化方法的流程圖;
[0041]圖2為本發(fā)明實(shí)施例提供的即時(shí)編譯參數(shù)優(yōu)化方法的另一流程圖;
[0042]圖3為本發(fā)明實(shí)施例提供的即時(shí)編譯參數(shù)優(yōu)化裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0043]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0044]圖1為本發(fā)明實(shí)施例提供的即時(shí)編譯參數(shù)優(yōu)化方法的流程圖。本發(fā)明實(shí)施例提供的即時(shí)編譯參數(shù)優(yōu)化方法的執(zhí)行主體為即時(shí)編譯參數(shù)優(yōu)化裝置,所述即時(shí)編譯參數(shù)優(yōu)化裝置例如可以是即時(shí)編譯器或虛擬機(jī)。如圖1所示,本發(fā)明實(shí)施例提供的即時(shí)編譯參數(shù)優(yōu)化方法,包括:
[0045]101、使用即時(shí)編譯參數(shù)的當(dāng)前值,對(duì)目標(biāo)應(yīng)用程序進(jìn)行性能測(cè)試,得到所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值。
[0046]102、根據(jù)所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)是否收斂。
[0047]103、若未收斂,則將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng),得到所述即時(shí)編譯參數(shù)的當(dāng)前值的隨機(jī)變異值;將所述即時(shí)編譯參數(shù)的當(dāng)前值的隨機(jī)變異值作為下一次性能測(cè)試中所述即時(shí)編譯參數(shù)的當(dāng)前值,再次執(zhí)行101和102 ;其中,所述步長(zhǎng)為所述即時(shí)編譯參數(shù)的最小單位。
[0048]具體地,目標(biāo)應(yīng)用程序可以為虛擬機(jī)中待運(yùn)行的任意一個(gè)應(yīng)用程序。目標(biāo)應(yīng)用程序的性能指標(biāo)例如可以是反映虛擬機(jī)運(yùn)行目標(biāo)應(yīng)用程序時(shí)性能水平的一些指標(biāo),例如,對(duì)于標(biāo)準(zhǔn)測(cè)試集SpecJVM2008,其性能指標(biāo)可以是SpecJVM2008的分值。實(shí)際中,所述即時(shí)編譯參數(shù)可以為以下任意一種:熱點(diǎn)方法執(zhí)行次數(shù)的最小值,方法內(nèi)部循環(huán)次數(shù)的最小值,被內(nèi)聯(lián)方法的最大體積,內(nèi)聯(lián)的最大深度。本發(fā)明實(shí)施例在即時(shí)編譯參數(shù)的優(yōu)化過(guò)程中確定即時(shí)編譯參數(shù)的最優(yōu)值,在執(zhí)行本發(fā)明實(shí)施例的初始階段,需要為即時(shí)編譯參數(shù)選擇初始值,并將初始值作為第一次性能測(cè)試中所述即時(shí)編譯參數(shù)的當(dāng)前值。實(shí)際中,即時(shí)編譯參數(shù)的初始值可以為:虛擬機(jī)預(yù)先定義的默認(rèn)值、用戶指定值,也可以是任何隨機(jī)值。
[0049]本發(fā)明實(shí)施例提供的即時(shí)編譯參數(shù)優(yōu)化方法,通過(guò)迭代訓(xùn)練的方式尋找即時(shí)編譯參數(shù)的最優(yōu)值,每完成一次性能測(cè)試就進(jìn)行一次目標(biāo)應(yīng)用程序的性能指標(biāo)是否收斂的判斷;若根據(jù)所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)未收斂,則對(duì)即時(shí)編譯參數(shù)的當(dāng)前值進(jìn)行隨機(jī)變異,將即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng),通過(guò)隨機(jī)變異每次將即時(shí)編譯參數(shù)的取值變化一個(gè)較大的范圍,快速的略過(guò)該較大的范圍內(nèi)的所有樣本,降低測(cè)試工作量。本發(fā)明實(shí)施例通過(guò)隨機(jī)變異的方法以更快的速度逼近即時(shí)編譯參數(shù)的最優(yōu)值,提升即時(shí)編譯參數(shù)的選值準(zhǔn)確度和選擇效率,提升虛擬機(jī)的性能。
[0050]在上述實(shí)施例的基礎(chǔ)上,在本發(fā)明一實(shí)施例中,所述根據(jù)所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)是否收斂的一種可行的實(shí)現(xiàn)方式為:判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值是否超過(guò)閾值;若是,則確定所述目標(biāo)應(yīng)用程序的性能指標(biāo)未收斂;若否,則可以確定所述目標(biāo)應(yīng)用程序的性能指標(biāo)已收斂。其中,所述閾值為預(yù)先設(shè)定的收斂范圍,即性能的變化幅度,例如可以為I %。在本發(fā)明實(shí)施例中,判定目標(biāo)應(yīng)用程序的性能指標(biāo)已收斂的條件是:所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值未超過(guò)閾值。
[0051]進(jìn)一步可選的,在本發(fā)明另一實(shí)施例中,判定目標(biāo)應(yīng)用程序的性能指標(biāo)已收斂的條件可以為:判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值是否超過(guò)閾值;若判定所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值未超過(guò)所述閾值,并且在連續(xù)M次的性能測(cè)試中分別得到的差值都未超過(guò)所述閾值,則確定目標(biāo)應(yīng)用程序的性能指標(biāo)已收斂。其中,所述M的取值可以根據(jù)用戶需求進(jìn)行設(shè)置。其中,每次性能測(cè)試時(shí)當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值可以參考步驟103中的當(dāng)前值與測(cè)試值的規(guī)律變化。具體地,該實(shí)施例中的每次性能測(cè)試可以包括:
[0052]1012、使用即時(shí)編譯參數(shù)的當(dāng)前值,對(duì)目標(biāo)應(yīng)用程序進(jìn)行性能測(cè)試,得到所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值。
[0053]1022、判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值是否超過(guò)閾值。
[0054]1032、若判定所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值未超過(guò)所述閾值,則將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng),得到所述即時(shí)編譯參數(shù)的當(dāng)前值的隨機(jī)變異值;將所述即時(shí)編譯參數(shù)的當(dāng)前值的隨機(jī)變異值作為下一次性能測(cè)試中所述即時(shí)編譯參數(shù)的當(dāng)前值。其中,所述步長(zhǎng)為所述即時(shí)編譯參數(shù)的最小單位。
[0055]例如,假設(shè)性能測(cè)試已經(jīng)做了 1000次,目標(biāo)應(yīng)用程序的性能指標(biāo)均未收斂;接著又做了 200次性能測(cè)試,若差值一直小于I % (此處以閾值設(shè)為I %為例),則認(rèn)為目標(biāo)應(yīng)用程序的性能指標(biāo)已經(jīng)收斂,對(duì)于該目標(biāo)應(yīng)用程序,將即時(shí)編譯參數(shù)的當(dāng)前值確定為即時(shí)編譯參數(shù)的最優(yōu)值。
[0056]需要說(shuō)明的是,根據(jù)即時(shí)編譯算法的原理,每個(gè)即時(shí)編譯參數(shù)取值大小都會(huì)影響性能,但同時(shí)也可能帶來(lái)負(fù)面代價(jià)。以熱點(diǎn)方法執(zhí)行次數(shù)的最小值(Hot_Method_Invocat1n_Limit)為例,這個(gè)參數(shù)從原理上來(lái)講,取值是越小越好,因?yàn)檫@個(gè)參數(shù)越小,則被判別為熱點(diǎn)方法的方法個(gè)數(shù)越多,那么整個(gè)程序中以編譯方式執(zhí)行的規(guī)模會(huì)比以解釋方式執(zhí)行的規(guī)模更大,顯然是有利于提升性能的;但是Hot_Method_Invocat1n_Limit也不是越小越好,因?yàn)槿绻鸋ot_Method_Invocat1n_Limit非常小,虛擬機(jī)用于編譯方法的代價(jià)會(huì)變大,反而有可能超過(guò)編譯方法帶來(lái)的好處,使得最終的性能變壞??梢?jiàn),任何參數(shù)的最優(yōu)值都有一個(gè)臨界值,臨界值就是事實(shí)上使性能最好的值,在越過(guò)臨界值之后反而會(huì)帶來(lái)負(fù)面代價(jià),使性能降低。只有找到這個(gè)臨界值才能算是找到了最優(yōu)結(jié)果。另外,各個(gè)即時(shí)編譯參數(shù)之間并不是完全獨(dú)立的,而是有一定的約束關(guān)系。也就是說(shuō),一個(gè)參數(shù)取某個(gè)值時(shí),另一個(gè)參數(shù)的最優(yōu)值會(huì)隨之變化。這也導(dǎo)致了整體上的最優(yōu)值是很難預(yù)測(cè)的,只能通過(guò)機(jī)器學(xué)習(xí)的方法,以迭代訓(xùn)練的方式在所有可能的空間中找到最優(yōu)解。在上述實(shí)施例的基礎(chǔ)上,本發(fā)明的一個(gè)實(shí)施例提出了針對(duì)各個(gè)即時(shí)編譯參數(shù)的啟發(fā)規(guī)則;與此對(duì)應(yīng),上述103和1032中的將即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng)的實(shí)現(xiàn)方式可以為:根據(jù)即時(shí)編譯參數(shù)的啟發(fā)規(guī)則,將即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng)。
[0057]本發(fā)明實(shí)施例為了減少性能測(cè)試的工作量,本發(fā)明的一個(gè)實(shí)施例提出了針對(duì)各個(gè)即時(shí)編譯參數(shù)的啟發(fā)規(guī)則;與此對(duì)應(yīng),上述將即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng)的實(shí)現(xiàn)方式可以為:根據(jù)即時(shí)編譯參數(shù)的啟發(fā)規(guī)則,將即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng),生成下一次性能測(cè)試中即時(shí)編譯參數(shù)的當(dāng)前值。
[0058]值得一提的是,在本發(fā)明實(shí)施例中,不同的即時(shí)編譯參數(shù)所對(duì)應(yīng)的啟發(fā)規(guī)則并不完全相同。例如,與熱點(diǎn)方法執(zhí)行次數(shù)的最小值、或方法內(nèi)部循環(huán)次數(shù)的最小值對(duì)應(yīng)的啟發(fā)規(guī)則為:越小越好,具體為:若所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值大于所述上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值,則將所述即時(shí)編譯參數(shù)的當(dāng)前值減少至少N個(gè)步長(zhǎng),反之,則將所述即時(shí)編譯參數(shù)的當(dāng)前值增大至少N個(gè)步長(zhǎng)。再例如,與被內(nèi)聯(lián)方法的最大體積、或所述內(nèi)聯(lián)的最大深度對(duì)應(yīng)的啟發(fā)規(guī)則為:越大越好,具體為:若所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值大于所述上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值,則將所述即時(shí)編譯參數(shù)的當(dāng)前值增大至少N個(gè)步長(zhǎng),反之,則將所述即時(shí)編譯參數(shù)的當(dāng)前值減少至少N個(gè)步長(zhǎng)。本發(fā)明實(shí)施例根據(jù)啟發(fā)規(guī)則對(duì)即時(shí)編譯參數(shù)的當(dāng)前值進(jìn)行隨機(jī)變異,使得即時(shí)編譯參數(shù)能夠更快的向最優(yōu)值逼近,提高找到最優(yōu)值的收斂速度,從而使即時(shí)編譯參數(shù)的選值成本遠(yuǎn)小于現(xiàn)有技術(shù)。
[0059]在實(shí)際中,對(duì)于N的取值,根據(jù)具體情況,可以將所述至少N個(gè)步長(zhǎng)設(shè)置為:所述即時(shí)編譯參數(shù)的取值上限的10%、5%、1%或0.1%等??梢岳斫獾氖?,在優(yōu)化測(cè)試的過(guò)程中,N的取值并不是固定不變的,而是可以隨著優(yōu)化過(guò)程的推進(jìn)根據(jù)實(shí)際情況進(jìn)行更新,例如:在優(yōu)化的初期將所述至少N個(gè)步長(zhǎng)設(shè)置為較大的數(shù)值,到優(yōu)化的后期將所述至少N個(gè)步長(zhǎng)設(shè)置較小的數(shù)值,以保證向即時(shí)編譯參數(shù)的最優(yōu)值逼近的精度越來(lái)越高。可以理解的是,對(duì)于N的取值也可以設(shè)置為10、50或100等。本領(lǐng)域技術(shù)人員可以理解,上述列舉的N的可能取值,只是示例,其并不對(duì)本發(fā)明技術(shù)方案的保護(hù)范圍構(gòu)成限定。N的取值也可以根據(jù)用戶需求進(jìn)行設(shè)置。可選的,每一次性能測(cè)試完成后,可以對(duì)至少一個(gè)即時(shí)編譯參數(shù)的取值進(jìn)行調(diào)整。
[0060]圖2為本發(fā)明實(shí)施例提供的即時(shí)編譯參數(shù)優(yōu)化方法的另一流程圖。如圖2所示,本發(fā)明實(shí)施例的即時(shí)編譯參數(shù)優(yōu)化方法可以包括三個(gè)步驟:選擇參數(shù)、訓(xùn)練參數(shù)、輸出參數(shù)。具體為:
[0061]1、選擇參數(shù):為每一個(gè)即時(shí)編譯參數(shù)分別選擇初始值,將初始值作為第一次性能測(cè)試中即時(shí)編譯參數(shù)的當(dāng)前值。
[0062]2、訓(xùn)練參數(shù):
[0063]2.1、根據(jù)即時(shí)編譯參數(shù)的當(dāng)前值,測(cè)試目標(biāo)應(yīng)用程序,得到所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值;
[0064]2.2、判斷結(jié)果是否收斂:判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值是否超過(guò)閾值。如果在完成連續(xù)若干輪性能測(cè)試后,即使繼續(xù)調(diào)整即時(shí)編譯參數(shù)的取值,目標(biāo)應(yīng)用程序的性能指標(biāo)的變化幅度不大,則認(rèn)為目標(biāo)應(yīng)用程序的性能指標(biāo)已經(jīng)收斂,轉(zhuǎn)到步驟3。否則,說(shuō)明最優(yōu)值還沒(méi)有找到,需要繼續(xù)迭代訓(xùn)練,轉(zhuǎn)到步驟2.3。
[0065]2.3、根據(jù)啟發(fā)規(guī)則隨機(jī)變異參數(shù):根據(jù)啟發(fā)規(guī)則,將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng),得到下一次性能測(cè)試中所述即時(shí)編譯參數(shù)的當(dāng)前值,轉(zhuǎn)到步驟2.1。
[0066]3、輸出參數(shù):將即時(shí)編譯參數(shù)的當(dāng)前值確定為即時(shí)編譯參數(shù)的最優(yōu)值。
[0067]本發(fā)明實(shí)施例提供的即時(shí)編譯參數(shù)優(yōu)化方法,利用機(jī)器學(xué)習(xí)的自動(dòng)化迭代訓(xùn)練原理,使用機(jī)器學(xué)習(xí)方法來(lái)尋找虛擬機(jī)即時(shí)編譯參數(shù)的最優(yōu)值,與已有方法相比,更加自動(dòng)化,搜索效率更高,參數(shù)值的準(zhǔn)確性更高。
[0068]圖3為本發(fā)明實(shí)施例提供的即時(shí)編譯參數(shù)優(yōu)化裝置的結(jié)構(gòu)示意圖。如圖3所示,本發(fā)明實(shí)施例提供的即時(shí)編譯參數(shù)優(yōu)化裝置300,包括:
[0069]性能測(cè)試模塊301,用于使用即時(shí)編譯參數(shù)的當(dāng)前值,對(duì)目標(biāo)應(yīng)用程序進(jìn)行性能測(cè)試,得到所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值。
[0070]判斷模塊302,用于根據(jù)所述性能測(cè)試模塊301得到的所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)是否收斂。
[0071]隨機(jī)變異模塊303,用于若所述判斷模塊302根據(jù)所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)未收斂,則將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng),得到所述即時(shí)編譯參數(shù)的當(dāng)前值的隨機(jī)變異值;將所述即時(shí)編譯參數(shù)的當(dāng)前值的隨機(jī)變異值作為下一次性能測(cè)試中所述即時(shí)編譯參數(shù)的當(dāng)前值;其中,所述步長(zhǎng)為所述即時(shí)編譯參數(shù)的最小單位。
[0072]本發(fā)明實(shí)施例提供的即時(shí)編譯參數(shù)優(yōu)化裝置,若根據(jù)所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)未收斂,則對(duì)即時(shí)編譯參數(shù)的當(dāng)前值進(jìn)行隨機(jī)變異,隨機(jī)變異每次將即時(shí)編譯參數(shù)的取值變化一個(gè)較大的范圍,快速的略過(guò)該較大的范圍內(nèi)的所有樣本,降低測(cè)試工作量。本發(fā)明實(shí)施例通過(guò)隨機(jī)變異的方法以更快的速度逼近即時(shí)編譯參數(shù)的最優(yōu)值,提升即時(shí)編譯參數(shù)的選值準(zhǔn)確度和選擇效率,提升虛擬機(jī)的性能。
[0073]在本發(fā)明一實(shí)施例中,所述判斷模塊302,具體用于判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值是否超過(guò)閾值;若是,則確定所述目標(biāo)應(yīng)用程序的性能指標(biāo)未收斂。
[0074]在上述實(shí)施例的基礎(chǔ)上,所述判斷模塊302,具體用于若判定所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值未超過(guò)所述閾值,并且,在連續(xù)M次的性能測(cè)試中分別得到的差值都未超過(guò)所述閾值,則確定所述目標(biāo)應(yīng)用程序的性能指標(biāo)已收斂。
[0075]在上述實(shí)施例的基礎(chǔ)上,所述隨機(jī)變異模塊303,具體用于根據(jù)所述即時(shí)編譯參數(shù)的啟發(fā)規(guī)則,將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng)。
[0076]在上述實(shí)施例的基礎(chǔ)上,所述隨機(jī)變異模塊303,具體用于:
[0077]在所述即時(shí)編譯參數(shù)為熱點(diǎn)方法執(zhí)行次數(shù)的最小值或方法內(nèi)部循環(huán)次數(shù)的最小值時(shí),若所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值大于所述上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值,則將所述即時(shí)編譯參數(shù)的當(dāng)前值減少至少N個(gè)步長(zhǎng),反之,則將所述即時(shí)編譯參數(shù)的當(dāng)前值增大至少N個(gè)步長(zhǎng);或者,
[0078]在所述即時(shí)編譯參數(shù)為被內(nèi)聯(lián)方法的最大體積或內(nèi)聯(lián)的最大深度時(shí),若所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值大于所述上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值,則將所述即時(shí)編譯參數(shù)的當(dāng)前值增大至少N個(gè)步長(zhǎng),反之,則將所述即時(shí)編譯參數(shù)的當(dāng)前值減少至少N個(gè)步長(zhǎng)。
[0079]本發(fā)明實(shí)施例根據(jù)啟發(fā)規(guī)則對(duì)即時(shí)編譯參數(shù)的當(dāng)前值進(jìn)行隨機(jī)變異,使得即時(shí)編譯參數(shù)能夠更快的向最優(yōu)值逼近,提高找到最優(yōu)值的收斂速度,從而使即時(shí)編譯參數(shù)的選值成本遠(yuǎn)小于現(xiàn)有技術(shù)。
[0080]最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
【主權(quán)項(xiàng)】
1.一種即時(shí)編譯參數(shù)優(yōu)化方法,其特征在于,包括: A、使用即時(shí)編譯參數(shù)的當(dāng)前值,對(duì)目標(biāo)應(yīng)用程序進(jìn)行性能測(cè)試,得到所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值; B、根據(jù)所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)是否收斂; 若未收斂,則將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng),得到所述即時(shí)編譯參數(shù)的當(dāng)前值的隨機(jī)變異值;將所述即時(shí)編譯參數(shù)的當(dāng)前值的隨機(jī)變異值作為下一次性能測(cè)試中所述即時(shí)編譯參數(shù)的當(dāng)前值,再次執(zhí)行A和B;其中,所述步長(zhǎng)為所述即時(shí)編譯參數(shù)的最小單位。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)是否收斂,包括: 判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值是否超過(guò)閾值; 若是,則確定所述目標(biāo)應(yīng)用程序的性能指標(biāo)未收斂。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)是否收斂,包括: 判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值是否超過(guò)閾值; 若否,并且在連續(xù)M次的性能測(cè)試中分別得到的差值都未超過(guò)所述閾值,則確定所述目標(biāo)應(yīng)用程序的性能指標(biāo)已收斂。4.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的方法,其特征在于,所述將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng),包括: 根據(jù)所述即時(shí)編譯參數(shù)的啟發(fā)規(guī)則,將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng)。5.根據(jù)權(quán)利要求4所述的方法,其特征在于, 若所述即時(shí)編譯參數(shù)為熱點(diǎn)方法執(zhí)行次數(shù)的最小值或方法內(nèi)部循環(huán)次數(shù)的最小值,則所述根據(jù)所述即時(shí)編譯參數(shù)的啟發(fā)規(guī)則,將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng)包括: 若所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值大于所述上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值,則將所述即時(shí)編譯參數(shù)的當(dāng)前值減少至少N個(gè)步長(zhǎng),反之,則將所述即時(shí)編譯參數(shù)的當(dāng)前值增大至少N個(gè)步長(zhǎng); 若所述即時(shí)編譯參數(shù)為被內(nèi)聯(lián)方法的最大體積或內(nèi)聯(lián)的最大深度,則所述根據(jù)所述即時(shí)編譯參數(shù)的啟發(fā)規(guī)則,將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng)包括: 若所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值大于所述上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值,則將所述即時(shí)編譯參數(shù)的當(dāng)前值增大至少N個(gè)步長(zhǎng),反之,則將所述即時(shí)編譯參數(shù)的當(dāng)前值減少至少N個(gè)步長(zhǎng)。6.一種即時(shí)編譯參數(shù)優(yōu)化裝置,其特征在于,包括: 性能測(cè)試模塊,用于使用即時(shí)編譯參數(shù)的當(dāng)前值,對(duì)目標(biāo)應(yīng)用程序進(jìn)行性能測(cè)試,得到所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值; 判斷模塊,用于根據(jù)所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)是否收斂; 隨機(jī)變異模塊,用于若所述判斷模塊根據(jù)所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)未收斂,則將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng),得到所述即時(shí)編譯參數(shù)的當(dāng)前值的隨機(jī)變異值;將所述即時(shí)編譯參數(shù)的當(dāng)前值的隨機(jī)變異值作為下一次性能測(cè)試中所述即時(shí)編譯參數(shù)的當(dāng)前值;其中,所述步長(zhǎng)為所述即時(shí)編譯參數(shù)的最小單位。7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述判斷模塊,具體用于判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值是否超過(guò)閾值;若是,則確定所述目標(biāo)應(yīng)用程序的性能指標(biāo)未收斂。8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述判斷模塊,具體用于判斷所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值與上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值的差值是否超過(guò)閾值;若否,并且在連續(xù)M次的性能測(cè)試中分別得到的差值都未超過(guò)所述閾值,則確定所述目標(biāo)應(yīng)用程序的性能指標(biāo)已收斂。9.根據(jù)權(quán)利要求6-8任一項(xiàng)所述的裝置,其特征在于,所述隨機(jī)變異模塊,具體用于根據(jù)所述即時(shí)編譯參數(shù)的啟發(fā)規(guī)則,將所述即時(shí)編譯參數(shù)的當(dāng)前值調(diào)整至少N個(gè)步長(zhǎng)。10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述隨機(jī)變異模塊,具體用于: 在所述即時(shí)編譯參數(shù)為熱點(diǎn)方法執(zhí)行次數(shù)的最小值或方法內(nèi)部循環(huán)次數(shù)的最小值時(shí),若所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值大于所述上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值,則將所述即時(shí)編譯參數(shù)的當(dāng)前值減少至少N個(gè)步長(zhǎng),反之,則將所述即時(shí)編譯參數(shù)的當(dāng)前值增大至少N個(gè)步長(zhǎng); 在所述即時(shí)編譯參數(shù)為被內(nèi)聯(lián)方法的最大體積或內(nèi)聯(lián)的最大深度時(shí),若所述目標(biāo)應(yīng)用程序的性能指標(biāo)的當(dāng)前值大于所述上一次性能測(cè)試中得到的性能指標(biāo)的測(cè)試值,則將所述即時(shí)編譯參數(shù)的當(dāng)前值增大至少N個(gè)步長(zhǎng),反之,則將所述即時(shí)編譯參數(shù)的當(dāng)前值減少至少N個(gè)步長(zhǎng)。
【文檔編號(hào)】G06F9/455GK105988855SQ201510084788
【公開(kāi)日】2016年10月5日
【申請(qǐng)日】2015年2月16日
【發(fā)明人】靳國(guó)杰, 高翔
【申請(qǐng)人】龍芯中科技術(shù)有限公司