SwiftUI Seri 13|Optimasi kinerja SwiftUI: metode penulisan yang mudah menyebabkan halaman macet
Banyak masalah kinerja SwiftUI disebabkan oleh granularitas status, waktu penghitungan, dan cakupan pembaruan tampilan yang tidak terkendali
Mengenai kinerja SwiftUI, dua penilaian ekstrem yang paling sering muncul:
- “SwiftUI pada dasarnya lambat”
- “SwiftUI baik-baik saja, tapi saya tidak bisa menulis”
Kedua pernyataan ini terlalu kasar.
Dalam proyek nyata, banyak masalah kinerja SwiftUI memang disebabkan oleh hal-hal berikut yang tidak terkendali:
- Perincian pembaruan status terlalu besar
- Tampilan hierarki terlalu dalam
- Perhitungan ditempatkan pada jalur yang sering disegarkan
- Biaya daftar dan tautan gambar terlalu tinggi
Jadi yang sebenarnya perlu Anda tanyakan adalah:
Apakah perubahan kecil pada halaman menyebabkan perhitungan ulang dan penggambaran ulang yang jauh lebih besar dari yang diperlukan?
1. Akar penyebab paling umum dari masalah kinerja SwiftUI adalah cakupan pembaruan yang terlalu besar
Banyak halaman yang macet. Di permukaan, tampaknya ada komponen tertentu yang berat, namun kenyataannya lebih dekat:
- Perubahan negara bagian setempat
- tetapi memungkinkan sebagian besar antarmuka untuk berpartisipasi kembali dalam penghitungan
Hal ini sangat penting dalam UI deklaratif. Karena tertulis “hitung ulang deskripsi saat ini setelah status berubah”.
Jika batas-batas negara bagian dan batas-batas komponen tidak selaras, perubahan kecil akan meluas menjadi pembaruan berskala besar.
2. Menempatkan perhitungan biaya tinggi pada jalur yang sering disegarkan adalah salah satu bau tidak sedap yang paling umum.
Misalnya:
- Lakukan pemformatan rumit di
body - Lakukan konversi data besar-besaran selama konstruksi tampilan
- Bangun kembali model tampilan yang kompleks setiap kali Anda menyegarkan
Hal-hal ini tidak terlihat ketika jumlah datanya sedikit. Setelah halaman sering disegarkan, biayanya akan meningkat dengan cepat.
3. Daftar dan gambar hampir selalu memperburuk masalah kinerja SwiftUI
Karena kedua skenario akan memungkinkan:
- Frekuensi penyegaran lebih tinggi
- Lebih banyak tampilan
- Utas utama berada di bawah tekanan yang lebih besar
Jika perincian status tidak cukup baik, halaman akan dengan mudah menghilangkan bingkai.
4. Kesimpulan: Halaman SwiftUI menjadi macet, yang biasanya terkait dengan hilangnya perincian pembaruan, waktu penghitungan, dan batas tampilan.
Singkatnya, saya akan mengatakan:
Akar penyebab paling umum dari masalah kinerja SwiftUI adalah membiarkan perubahan status terlalu memengaruhi cakupan, memungkinkan penghitungan berbiaya tinggi terjadi pada jalur penyegaran frekuensi tinggi, dan tidak menutup batas halaman.
Oleh karena itu, arah optimasi yang benar-benar efektif biasanya adalah mempersempit cakupan pengaruh, daripada meragukan keseluruhan kerangka sejak awal.
What to read next
Want more posts about SwiftUI?
Posts in the same category are usually the best next step for reading more on this topic.
View same categoryWant to keep following #iOS?
Tags are useful for related tools, specific problems, and similar troubleshooting notes.
View same tagWant to explore another direction?
If you are not sure what to read next, return to the homepage and start from categories, topics, or latest updates.
Back home