一種檢測應(yīng)用程序的性能的方法和裝置制造方法
【專利摘要】本發(fā)明提供一種檢測應(yīng)用程序的性能的方法和裝置,有助于開發(fā)人員確定應(yīng)用程序中的哪些方法可以被改進(jìn),進(jìn)而對(duì)應(yīng)用程序進(jìn)行優(yōu)化。本發(fā)明的檢測應(yīng)用程序的性能的方法包括:構(gòu)建軟件網(wǎng)絡(luò),該軟件網(wǎng)絡(luò)的節(jié)點(diǎn)一一對(duì)應(yīng)于應(yīng)用程序中的各個(gè)方法,節(jié)點(diǎn)之間的連邊對(duì)應(yīng)于所述各個(gè)方法之間的調(diào)用關(guān)系;根據(jù)所述軟件網(wǎng)絡(luò)中的節(jié)點(diǎn)的度值選擇一個(gè)或多個(gè)節(jié)點(diǎn),然后確定選擇的節(jié)點(diǎn)對(duì)應(yīng)的所述應(yīng)用程序的方法。
【專利說明】一種檢測應(yīng)用程序的性能的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,特別地涉及一種檢測應(yīng)用程序的性能的方法和裝置。
【背景技術(shù)】
[0002]互聯(lián)網(wǎng)上web應(yīng)用的性能是關(guān)乎用戶體驗(yàn)的一個(gè)重要方面,特別是在電子商務(wù)及新興的互聯(lián)網(wǎng)金融服務(wù)等領(lǐng)域,對(duì)應(yīng)用的性能提出了更高的要求。對(duì)于web應(yīng)用來講,web應(yīng)用中方法調(diào)用是影響性能的主要因素,如果對(duì)web應(yīng)用中的所有方法調(diào)用關(guān)系有一個(gè)整體的監(jiān)控,獲得系統(tǒng)運(yùn)行期間方法之間的調(diào)用關(guān)系,某個(gè)方法的調(diào)用次數(shù),調(diào)用花費(fèi)的時(shí)間等數(shù)據(jù),那么就可以根據(jù)這些數(shù)據(jù)進(jìn)行數(shù)據(jù)建模和分析,從而對(duì)系統(tǒng)代碼的性能優(yōu)化提供支持。
[0003]現(xiàn)有的web應(yīng)用的性能檢測工具,都是模擬大量用戶訪問Web應(yīng)用系統(tǒng)進(jìn)行壓力測試。在高并發(fā)的環(huán)境下,根據(jù)靜態(tài)HTML頁面的響應(yīng)時(shí)間,甚至動(dòng)態(tài)網(wǎng)頁的響應(yīng)時(shí)間等各項(xiàng)指標(biāo)來對(duì)性能進(jìn)行評(píng)價(jià),是一個(gè)對(duì)web應(yīng)用性能的綜合評(píng)價(jià)。
[0004]現(xiàn)有的web應(yīng)用性能檢測工具能夠?qū)ο到y(tǒng)的各個(gè)指標(biāo)進(jìn)行評(píng)定,基本不用來指導(dǎo)如何優(yōu)化應(yīng)用程序。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供一種檢測應(yīng)用程序的性能的方法和裝置,有助于開發(fā)人員確定應(yīng)用程序中的哪些方法可以被改進(jìn),進(jìn)而對(duì)應(yīng)用程序進(jìn)行優(yōu)化。
[0006]為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種檢測應(yīng)用程序的性能的方法。
[0007]本發(fā)明的檢測應(yīng)用程序的性能的方法包括:構(gòu)建軟件網(wǎng)絡(luò),該軟件網(wǎng)絡(luò)的節(jié)點(diǎn)一一對(duì)應(yīng)于應(yīng)用程序中的各個(gè)方法,節(jié)點(diǎn)之間的連邊對(duì)應(yīng)于所述各個(gè)方法之間的調(diào)用關(guān)系;根據(jù)所述軟件網(wǎng)絡(luò)中的節(jié)點(diǎn)的度值選擇一個(gè)或多個(gè)節(jié)點(diǎn),然后確定選擇的節(jié)點(diǎn)對(duì)應(yīng)的所述應(yīng)用程序的方法。
[0008]可選地,根據(jù)所述軟件網(wǎng)絡(luò)中的節(jié)點(diǎn)的度值選擇一個(gè)或多個(gè)節(jié)點(diǎn)之后,還包括:根據(jù)調(diào)用時(shí)長和調(diào)用次數(shù)選擇與所選擇的節(jié)點(diǎn)相連的其他節(jié)點(diǎn),然后確定所述其他節(jié)點(diǎn)對(duì)應(yīng)的所述應(yīng)用程序的方法。
[0009]可選地,所述構(gòu)建軟件網(wǎng)絡(luò)的步驟與所述選擇一個(gè)或多個(gè)節(jié)點(diǎn)的步驟之間,還包括:將所述軟件網(wǎng)絡(luò)劃分為多個(gè)社團(tuán);所述選擇一個(gè)或多個(gè)節(jié)點(diǎn)的步驟包括:對(duì)于多個(gè)所述社團(tuán),分別選擇各社團(tuán)中的度值最大的節(jié)點(diǎn)。
[0010]可選地,所述應(yīng)用程序?yàn)閣eb應(yīng)用程序。
[0011]根據(jù)本發(fā)明的另一方面,提供了檢測應(yīng)用程序的性能的裝置,包括:網(wǎng)絡(luò)構(gòu)建模塊,用于構(gòu)建軟件網(wǎng)絡(luò),該軟件網(wǎng)絡(luò)的節(jié)點(diǎn)一一對(duì)應(yīng)于應(yīng)用程序中的各個(gè)方法,節(jié)點(diǎn)之間的連邊對(duì)應(yīng)于所述各個(gè)方法之間的調(diào)用關(guān)系;第一方法確定模塊,用于根據(jù)所述軟件網(wǎng)絡(luò)中的節(jié)點(diǎn)的度值選擇一個(gè)或多個(gè)節(jié)點(diǎn),然后確定選擇的節(jié)點(diǎn)對(duì)應(yīng)的所述應(yīng)用程序的方法。
[0012]可選地,還包括第二方法確定模塊,用于根據(jù)調(diào)用時(shí)長和調(diào)用次數(shù)選擇與所選擇的節(jié)點(diǎn)相連的其他節(jié)點(diǎn),然后確定所述其他節(jié)點(diǎn)對(duì)應(yīng)的所述應(yīng)用程序的方法。
[0013]可選地,還包括社團(tuán)劃分模塊,用于在所述第一方法確定模塊選擇節(jié)點(diǎn)之前,將所述軟件網(wǎng)絡(luò)劃分為多個(gè)社團(tuán);所述第一方法確定模塊還用于對(duì)于多個(gè)所述社團(tuán),分別選擇各社團(tuán)中的度值最大的節(jié)點(diǎn)。
[0014]根據(jù)本發(fā)明的技術(shù)方案,根據(jù)應(yīng)用程序中的方法構(gòu)建軟件網(wǎng)絡(luò),根據(jù)節(jié)點(diǎn)的度值從該軟件網(wǎng)絡(luò)中選擇節(jié)點(diǎn),從而能夠確定要對(duì)哪些方法進(jìn)行改進(jìn)。采用先劃分社團(tuán)再選擇節(jié)點(diǎn)的方式有助于在對(duì)應(yīng)用程序進(jìn)行優(yōu)化時(shí)得到穩(wěn)定的性能提升。本實(shí)施例中的這種應(yīng)用程序性能檢測方式有助于準(zhǔn)確反映應(yīng)用程序運(yùn)行時(shí)的性能情況以及方法之間的調(diào)用關(guān)系,從而對(duì)應(yīng)用程序的性能優(yōu)化提供支持。
【專利附圖】
【附圖說明】
[0015]附圖用于更好地理解本發(fā)明,不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。其中:
[0016]圖1是根據(jù)本發(fā)明實(shí)施例的檢測應(yīng)用程序的性能的優(yōu)選方式的示意圖;
[0017]圖2是一種軟件網(wǎng)絡(luò)的示意圖;
[0018]圖3是根據(jù)本發(fā)明實(shí)施例的檢測應(yīng)用程序的性能的裝置的主要模塊的示意圖?!揪唧w實(shí)施方式】
[0019]以下結(jié)合附圖對(duì)本發(fā)明的示范性實(shí)施例做出說明,其中包括本發(fā)明實(shí)施例的各種細(xì)節(jié)以助于理解,應(yīng)當(dāng)將它們認(rèn)為僅僅是示范性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)至IJ,可以對(duì)這里描述的實(shí)施例做出各種改變和修改,而不會(huì)背離本發(fā)明的范圍和精神。同樣,為了清楚和簡明,以下的描述中省略了對(duì)公知功能和結(jié)構(gòu)的描述。
[0020]圖1是根據(jù)本發(fā)明實(shí)施例的檢測應(yīng)用程序的性能的優(yōu)選方式的示意圖。如圖1所示,先獲取方法檢測日志(步驟S11),可采用現(xiàn)有的各種監(jiān)控應(yīng)用程序的工具,得到原始數(shù)據(jù),主要包括系統(tǒng)運(yùn)行中方法名稱,方法調(diào)用的次數(shù)和方法調(diào)用花費(fèi)的時(shí)間等。對(duì)檢測日志最好進(jìn)行數(shù)據(jù)清洗(步驟S12),包括采用去重、統(tǒng)計(jì)等手段,以增強(qiáng)數(shù)據(jù)的有效性。根據(jù)上述數(shù)據(jù),就可以構(gòu)建軟件網(wǎng)絡(luò)(步驟S13),軟件網(wǎng)絡(luò)的節(jié)點(diǎn)一一對(duì)應(yīng)于應(yīng)用程序中的各個(gè)方法,節(jié)點(diǎn)之間的連邊對(duì)應(yīng)于各個(gè)方法之間的調(diào)用關(guān)系。軟件網(wǎng)絡(luò)例如圖2所示,圖2是一種軟件網(wǎng)絡(luò)的示意圖。應(yīng)用程序包含多個(gè)方法,各個(gè)方法各自分別對(duì)應(yīng)于圖2中的節(jié)點(diǎn),節(jié)點(diǎn)名稱可采用方法名,例如方法a至g分別對(duì)應(yīng)于節(jié)點(diǎn)a至g。節(jié)點(diǎn)之間的連邊是有向線段,表示節(jié)點(diǎn)對(duì)應(yīng)的方法之間的調(diào)用關(guān)系,例如從a指向b的線段表示方法a調(diào)用方法b。上述連邊可以具有權(quán)值,例如圖中示出的W〈a,f >、W〈e,f >,該權(quán)值可以根據(jù)應(yīng)用程序在運(yùn)行時(shí)方法之間調(diào)用的次數(shù)和每次調(diào)用的時(shí)間共同確定,例如將調(diào)用的總次數(shù)乘以每次調(diào)用的時(shí)間。
[0021]在步驟S13之后,可以對(duì)軟件網(wǎng)絡(luò)進(jìn)行社團(tuán)劃分(步驟S14)。可采用現(xiàn)有的各種社團(tuán)劃分算法,其目的都是將軟件網(wǎng)絡(luò)中的方法劃分成不同的社團(tuán),社團(tuán)內(nèi)的方法之間調(diào)用相對(duì)頻繁,不同社團(tuán)的方法之間調(diào)用相對(duì)較少。由于所構(gòu)建的網(wǎng)絡(luò)中的連邊具有權(quán)重,而權(quán)值是影響方法調(diào)用性能的決定性因素,因此最好采用加權(quán)網(wǎng)絡(luò)的社團(tuán)發(fā)現(xiàn)算法。劃分社團(tuán)的意義主要有以下幾個(gè)方面,一是由于調(diào)用頻率高的方法節(jié)點(diǎn)和權(quán)值大的方法調(diào)用連邊在網(wǎng)絡(luò)中的分布是不可預(yù)知的,如果單純按照方法調(diào)用的權(quán)值大小和方法節(jié)點(diǎn)的度值大小來選定要優(yōu)化的方法,這就造成不同應(yīng)用優(yōu)化之后不能體現(xiàn)穩(wěn)定的性能提升。而社團(tuán)發(fā)現(xiàn)算法通過劃分社團(tuán),降低了網(wǎng)絡(luò)中節(jié)點(diǎn)的分布對(duì)性能優(yōu)化的影響,從而使得各種web應(yīng)用都體現(xiàn)出一個(gè)良好的性能提升。二是通過社團(tuán)劃分,將軟件網(wǎng)絡(luò)劃分成多個(gè)模塊,而web應(yīng)用的各項(xiàng)功能都是各個(gè)模塊相互配合完成的,因此鎖定了這些模塊,對(duì)其進(jìn)行整體優(yōu)化,也就消除了各個(gè)功能在模塊上的瓶頸,達(dá)到優(yōu)化性能的目的。對(duì)于規(guī)模較小的應(yīng)用程序,則可以劃分為較少的社團(tuán)或者不劃分社團(tuán)。
[0022]在劃分社團(tuán)之后,就可以選擇需要優(yōu)化的方法(步驟S15)??梢栽诿總€(gè)社團(tuán)中選擇度值最大的一個(gè)或幾個(gè)節(jié)點(diǎn),此處的度值是節(jié)點(diǎn)的被調(diào)用次數(shù)。節(jié)點(diǎn)的度值越大,說明其對(duì)應(yīng)的方法越頻繁地被其他方法調(diào)用,因此對(duì)其對(duì)應(yīng)的方法進(jìn)行優(yōu)化之后對(duì)于程序性能的提高有更大的貢獻(xiàn)。進(jìn)一步地可以根據(jù)調(diào)用時(shí)長和調(diào)用次數(shù),選擇與度值最大的一個(gè)或幾個(gè)節(jié)點(diǎn)相連的其他節(jié)點(diǎn),其中盡可能選擇調(diào)用時(shí)長與調(diào)用次數(shù)之積較大的方法對(duì)應(yīng)的相連節(jié)點(diǎn)。對(duì)這樣的節(jié)點(diǎn)對(duì)應(yīng)的方法進(jìn)行優(yōu)化也有助于提高社團(tuán)作為一個(gè)模塊的性能。
[0023]圖3是根據(jù)本發(fā)明實(shí)施例的檢測應(yīng)用程序的性能的裝置的主要模塊的示意圖。如圖3所示,檢測應(yīng)用程序的性能的裝置30主要包括網(wǎng)絡(luò)構(gòu)建模塊31和第一方法確定模塊32。
[0024]網(wǎng)絡(luò)構(gòu)建模塊31用于構(gòu)建軟件網(wǎng)絡(luò),該軟件網(wǎng)絡(luò)的節(jié)點(diǎn)一一對(duì)應(yīng)于應(yīng)用程序中的各個(gè)方法,節(jié)點(diǎn)之間的連邊對(duì)應(yīng)于所述各個(gè)方法之間的調(diào)用關(guān)系;第一方法確定模塊32用于根據(jù)軟件網(wǎng)絡(luò)中的節(jié)點(diǎn)的度值選擇一個(gè)或多個(gè)節(jié)點(diǎn),然后確定選擇的節(jié)點(diǎn)對(duì)應(yīng)的應(yīng)用程序的方法。
[0025]檢測應(yīng)用程序的性能的裝置30還可以包括第二方法確定模塊(圖中未示出),用于根據(jù)調(diào)用時(shí)長和調(diào)用次數(shù)選擇與所選擇的節(jié)點(diǎn)相連的其他節(jié)點(diǎn),然后確定該其他節(jié)點(diǎn)對(duì)應(yīng)的應(yīng)用程序的方法。
[0026]檢測應(yīng)用程序的性能的裝置30還可以包括社團(tuán)劃分模塊,用于在第一方法確定模塊32選擇節(jié)點(diǎn)之前,將軟件網(wǎng)絡(luò)劃分為多個(gè)社團(tuán);這樣,第一方法確定模塊32還可用于對(duì)于多個(gè)上述社團(tuán),分別選擇各社團(tuán)中的度值最大的節(jié)點(diǎn)。
[0027]根據(jù)本發(fā)明實(shí)施例的技術(shù)方案,根據(jù)應(yīng)用程序中的方法構(gòu)建軟件網(wǎng)絡(luò),根據(jù)節(jié)點(diǎn)的度值從該軟件網(wǎng)絡(luò)中選擇節(jié)點(diǎn),從而能夠確定要對(duì)哪些方法進(jìn)行改進(jìn)。采用先劃分社團(tuán)再選擇節(jié)點(diǎn)的方式有助于在對(duì)應(yīng)用程序進(jìn)行優(yōu)化時(shí)得到穩(wěn)定的性能提升。本實(shí)施例中的這種應(yīng)用程序性能檢測方式有助于準(zhǔn)確反映應(yīng)用程序運(yùn)行時(shí)的性能情況以及方法之間的調(diào)用關(guān)系,從而對(duì)應(yīng)用程序的性能優(yōu)化提供支持。
[0028]以上結(jié)合具體實(shí)施例描述了本發(fā)明的基本原理,但是,需要指出的是,對(duì)本領(lǐng)域的普通技術(shù)人員而言,能夠理解本發(fā)明的方法和設(shè)備的全部或者任何步驟或者部件,可以在任何計(jì)算裝置(包括處理器、存儲(chǔ)介質(zhì)等)或者計(jì)算裝置的網(wǎng)絡(luò)中,以硬件、固件、軟件或者它們的組合加以實(shí)現(xiàn),這是本領(lǐng)域普通技術(shù)人員在閱讀了本發(fā)明的說明的情況下運(yùn)用他們的基本編程技能就能實(shí)現(xiàn)的。
[0029]因此,本發(fā)明的目的還可以通過在任何計(jì)算裝置上運(yùn)行一個(gè)程序或者一組程序來實(shí)現(xiàn)。所述計(jì)算裝置可以是公知的通用裝置。因此,本發(fā)明的目的也可以僅僅通過提供包含實(shí)現(xiàn)所述方法或者裝置的程序代碼的程序產(chǎn)品來實(shí)現(xiàn)。也就是說,這樣的程序產(chǎn)品也構(gòu)成本發(fā)明,并且存儲(chǔ)有這樣的程序產(chǎn)品的存儲(chǔ)介質(zhì)也構(gòu)成本發(fā)明。顯然,所述存儲(chǔ)介質(zhì)可以是任何公知的存儲(chǔ)介質(zhì)或者將來開發(fā)出的任何存儲(chǔ)介質(zhì)。
[0030]還需要指出的是,在本發(fā)明的裝置和方法中,顯然,各部件或各步驟是可以分解和/或重新組合的。這些分解和/或重新組合應(yīng)視為本發(fā)明的等效方案。并且,執(zhí)行上述系列處理的步驟可以自然地按照說明的順序按時(shí)間順序執(zhí)行,但是并不需要一定按照時(shí)間順序執(zhí)行。某些步驟可以并行或彼此獨(dú)立地執(zhí)行。
[0031]上述【具體實(shí)施方式】,并不構(gòu)成對(duì)本發(fā)明保護(hù)范圍的限制。本領(lǐng)域技術(shù)人員應(yīng)該明白的是,取決于設(shè)計(jì)要求和其他因素,可以發(fā)生各種各樣的修改、組合、子組合和替代。任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種檢測應(yīng)用程序的性能的方法,其特征在于,包括: 構(gòu)建軟件網(wǎng)絡(luò),該軟件網(wǎng)絡(luò)的節(jié)點(diǎn)一一對(duì)應(yīng)于應(yīng)用程序中的各個(gè)方法,節(jié)點(diǎn)之間的連邊對(duì)應(yīng)于所述各個(gè)方法之間的調(diào)用關(guān)系; 根據(jù)所述軟件網(wǎng)絡(luò)中的節(jié)點(diǎn)的度值選擇一個(gè)或多個(gè)節(jié)點(diǎn),然后確定選擇的節(jié)點(diǎn)對(duì)應(yīng)的所述應(yīng)用程序的方法。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)所述軟件網(wǎng)絡(luò)中的節(jié)點(diǎn)的度值選擇一個(gè)或多個(gè)節(jié)點(diǎn)之后,還包括: 根據(jù)調(diào)用時(shí)長和調(diào)用次數(shù)選擇與所選擇的節(jié)點(diǎn)相連的其他節(jié)點(diǎn),然后確定所述其他節(jié)點(diǎn)對(duì)應(yīng)的所述應(yīng)用程序的方法。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于, 所述構(gòu)建軟件網(wǎng)絡(luò)的步驟與所述選擇一個(gè)或多個(gè)節(jié)點(diǎn)的步驟之間,還包括:將所述軟件網(wǎng)絡(luò)劃分為多個(gè)社團(tuán); 所述選擇一個(gè)或多個(gè)節(jié)點(diǎn)的步驟包括:對(duì)于多個(gè)所述社團(tuán),分別選擇各社團(tuán)中的度值最大的節(jié)點(diǎn)。
4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述應(yīng)用程序?yàn)閣eb應(yīng)用程序。
5.一種檢測應(yīng)用程序的性能的裝置,其特征在于,包括: 網(wǎng)絡(luò)構(gòu)建模塊,用于構(gòu)建軟件網(wǎng)絡(luò),該軟件網(wǎng)絡(luò)的節(jié)點(diǎn)一一對(duì)應(yīng)于應(yīng)用程序中的各個(gè)方法,節(jié)點(diǎn)之間的連邊對(duì)應(yīng)于所述各個(gè)方法之間的調(diào)用關(guān)系; 第一方法確定模塊,用于根據(jù)所述軟件網(wǎng)絡(luò)中的節(jié)點(diǎn)的度值選擇一個(gè)或多個(gè)節(jié)點(diǎn),然后確定選擇的節(jié)點(diǎn)對(duì)應(yīng)的所述應(yīng)用程序的方法。
6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,還包括第二方法確定模塊,用于根據(jù)調(diào)用時(shí)長和調(diào)用次數(shù)選擇與所選擇的節(jié)點(diǎn)相連的其他節(jié)點(diǎn),然后確定所述其他節(jié)點(diǎn)對(duì)應(yīng)的所述應(yīng)用程序的方法。
7.根據(jù)權(quán)利要求5或6所述的裝置,其特征在于, 還包括社團(tuán)劃分模塊,用于在所述第一方法確定模塊選擇節(jié)點(diǎn)之前,將所述軟件網(wǎng)絡(luò)劃分為多個(gè)社團(tuán); 所述第一方法確定模塊還用于對(duì)于多個(gè)所述社團(tuán),分別選擇各社團(tuán)中的度值最大的節(jié)點(diǎn)。
【文檔編號(hào)】G06F11/36GK103942141SQ201410119140
【公開日】2014年7月23日 申請(qǐng)日期:2014年3月27日 優(yōu)先權(quán)日:2014年3月27日
【發(fā)明者】晏迪 申請(qǐng)人:北京京東尚科信息技術(shù)有限公司, 北京京東世紀(jì)貿(mào)易有限公司