基準設定檔和啟動設定檔的差異

本文說明基準設定檔和啟動設定檔之間的差異。

您可以使用基準設定檔 Gradle 外掛程式,自動擷取 BaselineProfileRule 測試產生的可讀基準設定檔。建構應用程式時,Android Gradle 外掛程式 (AGP) 會將這些人類可讀的設定檔規則編譯為二進位格式,並封裝為 Android Package Kit (APK) 或 Android App Bundle (AAB) 中的 baseline.prof,Android Runtime (ART) 即可有效用於裝置端編譯 (前提是二進位設定檔小於 1.5 MB)。

產生的設定檔通常名為 startup-prof.txtbaseline-prof.txt

基準設定檔

基準設定檔檔案包含一整套規則,ART 會使用這些規則預先編譯常用程式碼路徑,藉此最佳化應用程式啟動作業、減少不流暢互動,並提升整體執行階段效能。

基準設定檔檔案通常是啟動設定檔中規則的超集。這個檔案包含應用程式啟動最佳化所需的所有規則 (透過 baselineProfile Gradle 工作產生),以及其他重要使用者歷程的額外設定檔。例如捲動及瀏覽不同畫面。

無論 includeInStartupProfile 設定欄位的值為何,系統都會產生這些非啟動規則。詳情請參閱「基準設定檔總覽」。

啟動設定檔

啟動設定檔檔案包含專為應用程式啟動路徑最佳化的規則。編譯期間,D8 和 R8 會使用 Java 位元碼產生 Dalvik 可執行 (DEX) 檔案。D8 和 R8 都會使用啟動設定檔,將重要的啟動程式碼放在主要的 .dex 檔案中,加快類別載入速度,進而最佳化 DEX 版面配置。如要大幅提升效能,啟動程式碼必須包含在這個主要 .dex 檔案中。如果啟動程式碼的累計大小過大,就會溢位到後續的 DEX 檔案,而這些檔案通常會填入非必要類別和方法,導致啟動速度變慢。

啟動設定檔會提供 DEX 版面配置最佳化所需的後設資料,但 R8 程式碼最佳化也能有效協助這個程序。R8 會移除未使用的程式碼並縮減位元組碼,藉此減少啟動邏輯的總足跡。減少後,重要程式碼就更有可能保留在主要 .dex 檔案中,避免溢位,並確保在更廣泛的 Android 版本中更有效率地執行。一般來說,您應該只針對應用程式初始顯示畫面不可或缺的測試情境,將 includeInStartupProfile 設為 true

詳情請參閱「啟動設定檔總覽」。