visual versión usar tiempo studio sistema puede las instalar implementar implementacion hay habilitado esta especificado errores error entorno encontrar ejecución ejecucion comprobaciones compilación compartido archivo anterior admite c# xamarin.ios xamarin compilation-time

c# - versión - instalar xamarin



¿Cómo acelerar el tiempo de compilación de MonoTouch? (3)

Mejoras en el tiempo de compilación en Xamarin.iOS 6.4

Xamarin.iOS 6.4 tiene importantes mejoras en el tiempo de compilación , y ahora hay una opción para enviar solo bits de código actualizados al dispositivo. Ver por ti mismo:

Obtenga más información y descubra cómo habilitar la construcción incremental en la publicación de Rolf .

Video Evolve 2013

Se puede ver una versión actualizada y ampliada de este contenido en el video de la charla de Mecánica avanzada de construcción de iOS que di en Evolve 2013 .

Respuesta original

Hay varios factores que afectan la velocidad de construcción. Sin embargo, la mayoría de ellos tienen un mayor impacto en las compilaciones de dispositivos, incluido el uso del enlazador administrado que usted mencionó.

Enlazador administrado

Para dispositivos , Link all es el más rápido, seguido por Link SDK y (al final) Do not link . La razón es que el enlazador puede eliminar el código más rápido de lo que el compilador AOT puede construirlo (ganancia neta). Además, la .app más pequeña se cargará más rápido a sus dispositivos.

Para el simulador Do not link es siempre más rápido porque no hay AOT (se usa el JIT). No debe usar otras opciones de enlace a menos que desee probarlas (aún es más rápido que hacer una compilación del dispositivo).

Trucos de dispositivos

  • Construir una arquitectura única (por ejemplo, ARMv7) es más rápido que un binario FAT (por ejemplo, ARMv7 + ARMV7s). Las aplicaciones más pequeñas también significan menos tiempo para cargar en el dispositivo;

  • El compilador AOT (mono) predeterminado es mucho más rápido que el uso de compiladores LLVM. Sin embargo, el último generará un mejor código y también es compatible con ARMv7s, Thumb2;

  • Si tiene grandes activos incluidos en su .app, llevará tiempo implementarlos / cargarlos (cada vez que se deben firmar) con su aplicación. Escribí una publicación en el blog sobre cómo puede solucionar esto; puede ahorrar mucho tiempo si tiene grandes activos;

  • El almacenamiento en caché de archivos de objetos se implementó en MonoTouch 5.4. Algunas compilaciones serán mucho más rápidas, pero otras no (cuando la caché se debe purgar) más rápido (pero nunca más lento ;-). Más información por qué esto sucede a menudo here ).

  • Las compilaciones de depuración toman más tiempo debido a los símbolos, ejecutando dsymutil y, dado que termina siendo más grande, tiempo adicional para cargar en los dispositivos.

  • Las compilaciones de lanzamiento, por defecto (puede apagarlo), hacen una tira IL de los ensamblajes. Eso lleva solo un poco de tiempo, probablemente recuperado al implementar (un .app más pequeño) en el dispositivo.

Trucos de simulador

  • Como dije antes, trate de evitar los enlaces, ya que llevará más tiempo y requerirá copiar ensamblajes (en lugar de enlazarlos simbólicamente);

  • Usar bibliotecas nativas es más lento porque no podemos reutilizar el ejecutable principal compartido de simlauncher en tales casos y necesitamos pedirle a gcc que compile uno para la aplicación (y eso es lento).

Finalmente, cuando tengas dudas, ¡hazlo! y con eso me refiero a que puede agregar --time --time a su proyecto extra mtouch arguments para ver una marca de tiempo después de cada operación :-)

Es bien sabido que

Si la compilación demora incluso 15 segundos, los programadores se aburrirán mientras el compilador se ejecuta y pasarán a leer The Onion , que los absorberá y eliminará horas de productividad.

Nuestra aplicación MonoTouch demora 40 segundos en compilarse en Macbook Air en la configuración de Debug / Simulator.

Tenemos alrededor de 10 ensamblajes en la solución.
También estamos enlazando con algunas bibliotecas nativas con gcc_flags .

Estoy seguro de que hay formas de optimizar el tiempo de compilación que no conozco, que podría tener que ver con las referencias, el enlazador, lo que sea.

Estoy haciendo esta pregunta con la esperanza de que alguien con mejor conocimiento que yo compile (sin juego de palabras) una lista de consejos y cosas para comprobar para reducir el tiempo de compilación de MonoTouch para compilaciones de depuración.

No sugiera optimizaciones de hardware u optimizaciones que no MonoTouch directamente relacionadas con MonoTouch .


Esto no es realmente una respuesta, sino un marcador de posición temporal hasta que haya una mejor.
Encontré esta cita de Seb :

Mire las opciones de compilación de su proyecto y asegúrese de que el "Comportamiento del enlazador" tenga los "Conjuntos de SDK de enlace" predeterminados.

Si muestra "No vincular", experimentará un tiempo de compilación muy largo (una gran parte de él en dsymutil).

No sé si todavía es relevante, porque MonoDevelop muestra una señal de advertencia cuando elijo esta opción, y no parece afectar mucho el rendimiento.


No puede esperar que su compilador se encienda rápidamente sin entender todo lo que se requiere hacer. Aplicaciones más grandes, naturalmente, tomarán más tiempo. Diferentes idiomas o diferentes compiladores del mismo idioma pueden marcar una gran diferencia en cuanto a cuánto tiempo lleva compilar el código.

Tenemos un proyecto que tardará casi 2 minutos en compilarse. Su mejor solución es encontrar la forma de reducir el número de veces que compila su código.

En lugar de tratar de arreglar 1 línea de código y reconstruir, una y otra vez. Reúna a un grupo de personas para discutir el problema. O crea una lista de 3 o 4 cosas en las que quieras trabajar, complétalas todas y luego prueba.

Estas son solo algunas sugerencias y no funcionarán en todos los casos.