Rendimiento de Xamarin.Mac
Información general
Las aplicaciones de Xamarin.Mac son similares a las de Xamarin.iOS, y muchas de las mismas sugerencias de rendimiento son aplicables:
Sin embargo, hay una serie de sugerencias de macOS específicas que pueden serle de ayuda.
Preferir plataformas de destino modernas
Hay varias plataformas de destino disponibles en la aplicación de Xamarin.Mac que tienen distintas características y funciones.
Cuando sea posible, utilice las modernas y trabaje con bibliotecas dependientes para agregar compatibilidad. Solo las plataformas de destino modernas permiten la vinculación que puede reducir drásticamente el tamaño de ensamblado. Esto es especialmente importante cuando se habilita AOT, como compilación AOT de ensamblados completas puede generar grandes agrupaciones finales.
Habilitación del enlazador
El tiempo de inicio, tanto en la carga como en "Just-In-Time" (JIT), escala de forma más o menos lineal el tamaño de los archivos binarios finales. La forma más fácil de mejorar este proceso es quitar el código no alcanzado con el enlazador.
Aunque esta sugerencia se aplica principalmente a los usuarios de plataformas de destino modernas, el uso de la vinculación de plataformas también puede proporcionar una mejora limitada del rendimiento.
Habilitación de AOT cuando sea pertinente
Otro aspecto del rendimiento de inicio es la compilación JIT de los ensamblados en código máquina. La compilación Ahead Of Time (AOT) puede reducir de forma significativa el tiempo de inicio, pero presenta una serie de ventajas que se explican en la documentación de AOT.
Garantía del rendimiento de los delegados
Muchas aplicaciones de Xamarin.Mac están centradas en las vistas de Cocoa, como NSCollectionView
, NSOutlineView
o NSTableView
. A menudo, estas vistas se proporcionan mediante las clases Delegate
y DataSource
que usted facilita a Cocoa, respondiendo a preguntas sobre lo que hay que mostrar.
Muchos de estos puntos de entrada se invocan con frecuencia. En ocasiones, varias veces por segundo durante un desplazamiento.
Asegúrese de que estas funciones devuelvan valores que se calculen fácilmente o utilicen información ya almacenada en la caché para evitar que la interfaz de usuario se bloquee.
Uso de API proporcionadas por Cocoa para reutilizar vistas
Muchas vistas de Cocoa que contienen muchas vistas o celdas secundarias (como NSCollectionView
, NSOutlineView
y NSTableView
) proporcionan API para crear y reutilizar vistas. Dichas vistas crean grupos de elementos compartidos e impiden que haya problemas de rendimiento al desplazarse rápido por las vistas.
Uso de la asincronía sin bloquear la interfaz de usuario
Las aplicaciones de escritorio a menudo procesan grandes cantidades de datos, y resulta muy fácil bloquear el subproceso de interfaz de usuario a la espera de una operación sincrónica.
Siempre que sea posible, use la asíncronía y los subprocesos para que no se bloquee la interfaz de usuario.
Para operaciones de larga ejecución, valore las opciones indicadas en los documentos de HIG de Apple para enviar notificaciones a los usuarios.