根據設計,樣式會在 Compose 的版面配置和繪圖階段運作。這樣一來,您就不必建立 lambda 型修飾符,因為 Styles 一律會略過組合階段。

修飾符的成效提升主要來自於三項最佳化措施:
- 階段轉移:樣式通常會以「繪製」階段為目標。當值變更時,Compose 只會使受影響的階段失效 (例如「重新繪製」),而不會觸發完整的重組或重新配置。
- 延遲分配:樣式會延遲分配動畫資源,直到動畫實際開始播放為止。這樣可減少初始組合期間所需的工作。
- 減少物件負擔:鏈結修飾符會為每個屬性 (例如邊框間距、邊框) 分配物件。樣式會使用單一 lambda 套用多個屬性,大幅減少記憶體配置。如果主題中定義了 Style,使用該主題的所有元件都會共用該 lambda。
下表顯示內部效能基準的說明結果,比較對象為使用 Styles 的 Compose 1.11.0-alpha06,以及不使用 Styles 的 Compose 實作。
這項basic_box_border_change測試凸顯了樣式系統的優勢,可避免在屬性更新期間分配多個修飾符物件,進而大幅減少約 77% 的分配作業,並縮短約 59% 的時間。
測試方法 |
說明 |
時間變更 |
分配變更 |
切換 |
-59.91% |
-77.22% |
|
比較以樣式為準的懸停/焦點/按壓狀態,與手動互動狀態集合。 |
-5.24% |
-14.72% |
|
測量具有五個鏈結修飾符的 |
-4.78% |
-6.60% |
|
使用硬式編碼字串算繪五個 |
+0.62% |
+2.41% |
|
比較透過樣式設定文字顏色與使用 |
+5.86% |
+9.82% |