Secara desain, Gaya beroperasi dalam fase tata letak dan gambar Compose. Hal ini menghindari kebutuhan untuk membuat pengubah berbasis lambda karena Gaya selalu melewati tahap komposisi.
Peningkatan performa pada pengubah berasal dari tiga pengoptimalan utama:
- Pergeseran fase: Gaya sering menargetkan fase Draw. Saat nilai berubah, Compose hanya membatalkan validasi fase yang terpengaruh (misalnya, Menggambar Ulang) daripada memicu Rekomposisi atau Tata Letak Ulang penuh.
- Alokasi lambat: Gaya menunda alokasi resource animasi hingga animasi benar-benar dimulai. Hal ini mengurangi pekerjaan yang diperlukan selama komposisi awal.
- Mengurangi overhead objek: Pengubah berantai mengalokasikan objek untuk setiap properti (misalnya, padding, batas). Gaya menggunakan satu lambda untuk menerapkan beberapa properti, sehingga mengurangi alokasi memori secara signifikan. Jika Style ditentukan dalam tema, lambda tersebut dibagikan di semua komponen yang menggunakan tema tersebut.
Tabel berikut menunjukkan hasil ilustratif dari tolok ukur performa internal untuk Compose 1.11.0-alpha06 Styles, dibandingkan dengan implementasi di Compose tanpa Styles.
Pengujian
basic_box_border_change menyoroti kekuatan sistem gaya dalam
menghindari alokasi beberapa objek pengubah selama pembaruan properti,
sehingga menghasilkan pengurangan alokasi yang sangat besar, yaitu sekitar 77%, dan pengurangan waktu sekitar 59%.
Metode Pengujian |
Deskripsi |
Perubahan Waktu |
Perubahan Alokasi |
Mengganti warna batas |
-59,91% |
-77,22% |
|
Membandingkan status arahkan kursor/fokus/tekan berbasis gaya dengan pengumpulan status interaksi manual. |
-5,24% |
-14,72% |
|
Mengukur komposisi dan tata letak awal |
-4,78% |
-6,60% |
|
Merender lima komponen |
+0,62% |
+2,41% |
|
Membandingkan penyetelan warna teks melalui gaya vs. menggunakan |
+5,86% |
+9,82% |