System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及電子,具體涉及一種編譯方法和電子設備。
技術介紹
1、電子設備在運行應用程序(application,app)時,應用程序的代碼需要編譯后才能執行。
2、目前,安卓(android)操作系統支持的代碼執行方式主要包括解釋執行、即時(just-in-time,jit)編譯執行和預先(ahead-of-time,aot)編譯執行。其中,aot編譯執行是對解釋執行的次數達到一定閾值的函數(即熱點函數)進行編譯。
3、隨著應用程序的使用時長的增加,熱點函數的數量會不斷增加,這使得aot編譯執行的占比也不斷增大,一般可以達到80%。因而,aot編譯生成的機器碼的質量,直接影響應用程序的運行性能。
4、然而,使用中發現,相關技術中的aot編譯生成的機器碼的質量較低,導致應用程序的運行性能較低,影響用戶的使用體驗。
技術實現思路
1、本申請提供了一種編譯方法和電子設備,能夠基于函數的編譯信息,為各個函數進行針對性、且差異化的aot編譯,能夠提高生成的目標代碼的質量,提升應用的運行性能。
2、第一方面,本申請提供一種編譯方法,應用于電子設備。該方法可以包括:接收用戶對第一應用的第一操作;獲取第一應用響應第一操作時執行的各個指令物理地址的執行次數和各個指令物理地址的所屬函數;獲取第一應用中各個函數的執行次數;根據各個指令物理地址的執行次數、各個指令物理地址的所屬函數,以及第一應用中各個函數的執行次數,確定第一應用中各個函數對應的編譯信息,編譯
3、其中,第一應用可以為電子設備中安裝的任意一個應用,如下文中的應用1。示例性的,第一應用可以是視頻應用、即時通信應用、社交應用、音樂應用、游戲應用、通話應用、購物應用等,本申請實施例對第一應用的類型不作具體限定。第一操作可以是用戶作用于第一應用的任一個操作。
4、函數是指應用中一個代碼塊。通常地,一個應用由多個函數組成,每個函數用于實現特定的功能。函數的執行次數(即下文中的函數執行次數)是指電子設備運行應用的過程中函數被調用的次數,應注意,函數的執行次數是指從電子設備首次運行某一應用開始,多次運行應用的過程中函數被調用的次數的累計值。
5、指令物理地址是指電子設備的內存中的實際地址。電子設備的處理器通過指令物理地址來執行內存中的指令,因而,通過監測處理器執行的指令物理地址,可以追蹤處理器實際執行的函數內部的指令。應注意,各個指令物理地址可以理解為第一應用響應第一操作時采集到的多個指令物理地址中各種不同的指令物理地址,即上述各個指令物理地址均不相同。
6、本申請實施例中,由于函數的執行次數可以反映應用運行過程中函數的實際調用頻率,指令物理地址的執行次數可以反映應用響應用戶操作時函數內部指令的具體執行情況。因而,基于采集到的各個指令物理地址的執行次數、各個指令物理地址的所屬函數以及應用中各個函數的執行次數,可以確定反映各個函數的實際執行情況的編譯信息。基于函數的編譯信息,為各個函數進行針對性、且差異化的aot編譯,能夠提高生成的目標代碼的質量,提升應用的運行性能。
7、其中,熱度級別用于指示函數被調用頻率的高低。分支跳轉概率用于指示函數中分支指令對應的各個分支的跳轉概率。循環次數用于指示函數內部的循環體的循環次數。
8、這樣一來,利用函數的熱度級別,可以對不同熱度級別的函數進行不同程度的函數內聯優化,這樣在執行基于優化的函數生成的目標代碼時,能夠減少函數的調用次數,提升應用的響應速度,同時還可以有效控制代碼量的增加,節省電子設備的內存空間。再者,基于函數中分支指令對應的各個分支的跳轉概率,可以對應用中的函數進行更為細致地編譯,能夠提高分支預測的成功率,減少分支未命中,提升應用的運行性能。另外,基于函數內部的循環體的循環次數,對應用中的各個函數進行循環展開優化,能夠減少循環控制開銷,提升應用的運行性能。
9、在第一方面的一種可能的實現方式中,編譯信息包括熱度級別,上述基于編譯信息,分別對第一應用中各個函數進行aot編譯,包括:根據第一函數的熱度級別,確定第一閾值和第二閾值,其中,第一函數為第一應用中的任一個函數,第一閾值的大小與熱度級別的高低正相關,第二閾值的大小與熱度級別的高低正相關;若第一函數的指令數量小于或等于第一閾值,且第二函數的指令數量小于或等于第二閾值,將第二函數內嵌于第一函數,得到第三函數,其中,第二函數為第一函數調用的函數;根據第三函數,生成目標代碼。
10、其中,第一閾值用于限制作為內聯函數(即下文中的固定inline函數)所允許的最大指令數量(即代碼量),即當函數的指令數量小于或等于第一閾值時,該函數可以作為內聯函數。第一閾值即下文中的代碼量閾值1。第二閾值用于限制作為被內聯函數(即下文中的被inline函數)所允許的最大指令數量,即當函數的指令數量小于或等于第二閾值時,該函數可以被嵌入對應的內聯函數。第二閾值即下文中的代碼量閾值2。也就是說,若第一閾值較大,則應用中更多的函數可以作為內聯函數。相反,若第一閾值較小,則應用中更少的函數可以作為內聯函數。同理,若第二閾值較大,則應用中更多的函數可以作為被內聯函數。相反,若第二閾值較小,則應用中更少的函數可以作為被內聯函數。因而,可以為不同熱度級別的函數,設置不同的第一閾值和第二閾值。
11、示例性的,以第一函數為例,若第一函數的指令數量小于或等于第一閾值,且第二函數的指令數量小于或等于第二閾值,將第二函數內嵌于第一函數,即得到第三函數。對第三函數的字節碼進行轉換,生成目標代碼(即機器碼)。這樣,電子設備再次啟動第一應用后,當調用第一函數時,處理器直接運行目標代碼。
12、該實現方式中,由于熱度級別較高的函數的調用頻率較高,因而,針對熱度級別較高的函數,設置較大的第一閾值和第二閾值。這樣的話,在aot編譯時,會對更多的熱度級別高的函數進行函數內聯優化,并根據優化的函數生成目標代碼,使得在執行目標代碼時,可以直接運行被調用的函數,能夠更大程度地減少函數的調用次數,提升應用的響應速度。再者,由于熱度級別較低的函數的調用頻率較低,因而,針對熱度級別較低的函數,設置較小的第一閾值和第二閾值。與熱度較高的函數不同的是,熱度級別較低的函數更少地進行函數內聯優化,這樣能夠有效控制目標代碼的代碼量的增加,節省電子設備的內存空間。
13、在第一方面的一種可能的實現方式中,編譯信息包括循環次數,上述基于編譯信息,分別對第一應用中各個函數進行aot編譯,包括:根據第一函數中第一循環體的循環次數和第一循環體內部的指令數量,確定第一循環體對應的循環展開倍數,其中,第一函數為第一應用中的任一個函數,第一循環體為第一函數中的任一個循環體,循環展開倍數與循環體內部的指令數量負相關,且循環展開倍數與循環體的循環次數正相關;基于第一循環體對應的循環展開倍數,對第一循環體本文檔來自技高網...
【技術保護點】
1.一種編譯方法,應用于電子設備,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述編譯信息包括所述熱度級別,所述基于所述編譯信息,分別對所述第一應用中各個函數進行AOT編譯,包括:
3.根據權利要求1所述的方法,其特征在于,所述編譯信息包括所述循環次數,所述基于所述編譯信息,分別對所述第一應用中各個函數進行AOT編譯,包括:
4.根據權利要求1所述的方法,其特征在于,所述編譯信息包括所述分支跳轉概率,所述基于所述編譯信息,分別對所述第一應用中各個函數進行AOT編譯,包括:
5.根據權利要求1所述的方法,其特征在于,所述編譯信息包括所述熱度級別,所述基于所述編譯信息,分別對所述第一應用中各個函數進行AOT編譯,包括:
6.根據權利要求1所述的方法,其特征在于,所述根據各個所述指令物理地址的執行次數、各個所述指令物理地址的所屬函數,以及所述第一應用中各個函數的執行次數,確定所述第一應用中各個函數對應的編譯信息,包括:
7.根據權利要求6所述的方法,其特征在于,所述根據第一函數的執行次數,
8.根據權利要求6所述的方法,其特征在于,所述根據各個所述指令物理地址的執行次數、各個所述指令物理地址的所屬函數,以及各個函數的執行次數,確定所述第一函數中的各個分支的跳轉概率,包括:
9.根據權利要求8所述的方法,其特征在于,所述根據各個所述指令物理地址的執行次數和各個所述指令物理地址的所屬函數,確定所述第一函數中的各個循環體的循環次數,包括:
10.根據權利要求1所述的方法,其特征在于,所述根據各個所述指令物理地址的執行次數、各個所述指令物理地址的所屬函數,以及所述第一應用中各個函數的執行次數,確定所述第一應用中各個函數對應的編譯信息,包括:
11.根據權利要求1-10中任一項所述的方法,其特征在于,所述獲取所述第一應用響應所述第一操作時執行的各個指令物理地址的執行次數和各個所述指令物理地址的所屬函數,包括:
12.根據權利要求11所述的方法,其特征在于,所述分別對各個所述指令物理地址進行解析,確定各個所述指令物理地址的所屬函數,包括:
13.根據權利要求12所述的方法,其特征在于,所述根據所述虛擬地址,確定所述第三指令物理地址的所屬函數,包括:
14.根據權利要求11所述的方法,其特征在于,所述分別對各個所述指令物理地址進行解析,確定各個所述指令物理地址的所屬函數,包括:
15.根據權利要求14所述的方法,其特征在于,所述響應于所述第一操作,獲取各個所述指令物理地址的執行次數,包括:
16.根據權利要求15所述的方法,其特征在于,所述操作類型包括啟動應用的操作和/或作用于應用界面的操作;所述作用于應用界面的操作包括作用于應用界面中的控件的點擊操作、應用界面的切換操作和應用小窗切換操作中的至少一項。
17.一種電子設備,其特征在于,包括:處理器、存儲器和接口;
18.一種計算機可讀存儲介質,其特征在于,所述計算機可讀存儲介質中存儲了計算機程序,當所述計算機程序被處理器執行時,使得所述處理器執行權利要求1至16中任一項所述的方法。
...【技術特征摘要】
1.一種編譯方法,應用于電子設備,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述編譯信息包括所述熱度級別,所述基于所述編譯信息,分別對所述第一應用中各個函數進行aot編譯,包括:
3.根據權利要求1所述的方法,其特征在于,所述編譯信息包括所述循環次數,所述基于所述編譯信息,分別對所述第一應用中各個函數進行aot編譯,包括:
4.根據權利要求1所述的方法,其特征在于,所述編譯信息包括所述分支跳轉概率,所述基于所述編譯信息,分別對所述第一應用中各個函數進行aot編譯,包括:
5.根據權利要求1所述的方法,其特征在于,所述編譯信息包括所述熱度級別,所述基于所述編譯信息,分別對所述第一應用中各個函數進行aot編譯,包括:
6.根據權利要求1所述的方法,其特征在于,所述根據各個所述指令物理地址的執行次數、各個所述指令物理地址的所屬函數,以及所述第一應用中各個函數的執行次數,確定所述第一應用中各個函數對應的編譯信息,包括:
7.根據權利要求6所述的方法,其特征在于,所述根據第一函數的執行次數,確定所述第一函數的熱度級別,包括:
8.根據權利要求6所述的方法,其特征在于,所述根據各個所述指令物理地址的執行次數、各個所述指令物理地址的所屬函數,以及各個函數的執行次數,確定所述第一函數中的各個分支的跳轉概率,包括:
9.根據權利要求8所述的方法,其特征在于,所述根據各個所述指令物理地址的執行次數和各個所述指令物理地址的所屬函數,確定所述第一函數中的各個循環體的循環次數,包括:
<...
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。