Performa Xamarin.Mac
Gambaran Umum
Aplikasi Xamarin.Mac mirip dengan Xamarin.iOS, dan banyak saran performa yang sama berlaku:
tetapi ada sejumlah saran khusus macOS yang mungkin berguna.
Lebih suka kerangka kerja target modern
Ada beberapa Kerangka Kerja Target yang tersedia untuk aplikasi Xamarin.Mac dengan karakteristik dan fitur performa yang berbeda.
Jika memungkinkan, pilih Modern dan bekerja dengan pustaka dependen untuk menambahkan dukungan. Hanya Kerangka Kerja Target Modern yang memungkinkan penautan yang dapat secara drastis mengurangi ukuran perakitan. Ini menjadi sangat penting ketika mengaktifkan AOT, karena kompilasi AOT dari rakitan Penuh dapat menghasilkan bundel akhir yang besar.
Mengaktifkan linker
Waktu startup, baik dalam beban maupun "Just In Time" (JIT), menskalakan agak linier dengan ukuran biner akhir Anda. Cara termampu untuk meningkatkan ini adalah dengan menghapus kode mati dengan linker.
Meskipun saran ini terutama berlaku untuk pengguna Kerangka Kerja Target Modern, penggunaan Platform Linking juga dapat memberikan peningkatan performa terbatas.
Aktifkan AOT jika sesuai
Aspek lain dari performa startup adalah kompilasi JIT rakitan ke dalam kode mesin. Kompilasi Ahead of Time (AOT) dapat secara signifikan mengurangi waktu startup, tetapi dilengkapi dengan sejumlah tradeoff yang tercakup dalam dokumentasi AOT.
Memastikan delegasi berkinerja
Banyak aplikasi Xamarin.Mac berpusat di sekitar tampilan Kakao seperti NSCollectionView
, , NSOutlineView
atau NSTableView
. Seringkali tampilan ini didukung oleh Delegate
kelas dan DataSource
yang Anda berikan kepada Kakao, menjawab pertanyaan tentang apa yang harus ditampilkan.
Banyak dari titik masuk ini sering dipanggil, kadang-kadang beberapa kali per detik saat menggulir.
Pastikan fungsi-fungsi ini mengembalikan nilai yang mudah dihitung atau menggunakan informasi yang sudah di-cache, untuk mencegah antarmuka pengguna memblokir.
Menggunakan API yang disediakan Kakao untuk menggunakan kembali tampilan
Banyak tampilan Kakao yang berisi banyak tampilan atau sel anak (seperti NSCollectionView
, , NSOutlineView
dan NSTableView
) menyediakan API untuk membuat dan menggunakan kembali tampilan. Ini membuat kumpulan item bersama dan mencegah masalah performa saat menggulir tampilan dengan cepat.
Gunakan asinkron dan jangan blokir UI
Aplikasi desktop sering memproses data dalam jumlah besar dan sangat mudah untuk memblokir utas UI yang menunggu operasi sinkron.
Jika memungkinkan, gunakan asinkron dan utas untuk mencegah pemblokiran UI.
Untuk operasi jangka panjang, pertimbangkan opsi yang dicatat dalam HIG Apple untuk memberi tahu pengguna.