¿Qué tan grande es una aplicación de iPhone Objective-C frente a una aplicación MonoTouch?
-
22-07-2019 - |
Pregunta
Estoy considerando usar MonoTouch para algunos desarrollos de iPhone, pero el tamaño de la carga útil es un factor importante.
Para un usuario que nunca antes ha instalado Mono en su iPhone, ¿cuál sería el tamaño de un Objective-C " Hello World " aplicación se compara con un MonoTouch " Hello World " aplicación?
Más específicamente, ¿cuál es el aprox. número de bytes que deben descargarse, y cuál es el aprox. número de bytes utilizados una vez instalado?
Solución
A " Hola mundo " El programa en Objective-C ocupa 50 & nbsp; KB (carpeta completa .app). Con MonoTouch, un "Hello World" similar la aplicación ocupa 5 & nbsp; MB (carpeta completa .app), lo que no está nada mal teniendo en cuenta que tiene un tiempo de ejecución con recolección de basura.
Otros consejos
En 1.5 Monotouch
Una versión de lanzamiento, que es una aplicación creada con una licencia de distribución, y con nada más que la configuración predeterminada del proyecto, es 5 & nbsp; MB. De esos 4.3 & nbsp; MB es el ejecutable binario.
A menudo aumentan hasta 10 & nbsp; MB en mi experiencia, y los foros pintan la misma imagen. La tienda de aplicaciones informa el tamaño descomprimido, sin embargo, se descargan comprimidos. Comprimido es alrededor de 3 & nbsp; MB que, incluso en un 3G, está bien.
En mi opinión, la mayoría de las personas no mirarán el tamaño del archivo antes de descargar una aplicación, ni se preocuparán particularmente. El límite de la tienda de aplicaciones para descargas 3G ahora es de 20 & nbsp; MB que está dentro del tamaño de MonoTouch.
Para jugar al abogado del diablo, sí, son muchas órdenes más grandes que el equivalente de Objective-C y podrían asustar a algunas personas preocupadas por ocupar 4-10 & nbsp; MB más de su espacio de 16 & nbsp; GB. Sin embargo, también hay tiempo para comercializar y las herramientas existentes disponibles para .NET. Desarrollo y construyo todas mis aplicaciones MonoTouch en Visual Studio 2010 y luego las pruebo en Mac, y no creo que incluso Apple argumentara que su IDE está cerca del líder de la industria.
De esta pregunta en MonoTouch y tamaño de ejecutables :
MonoTouch no se traduce a Obj-c. Compila a .NET IL, luego compila eso (de la misma manera que lo haría un compilador JIT, pero antes es ejecutar - por lo tanto " antes de tiempo " compilador) en código ARM nativo.
entonces:
Obj-C - > GCC (o LLVM) - > Código ARM
vrs MT:
C # - > IL - > (Compilador AOT) - > Código ARM
Los binarios de salida en 3.x son más grandes porque también incluye un gran parte del .NET framework (bueno, Mono Framework, pero igual), así que si usted, por ejemplo, usa System.Xml, tiene que incluir eso en la salida - lo mismo con System.dll, etc. El enlazador es bastante inteligente, pero el resultado los binarios siempre serán más grandes .
Para mí, lo único que importa es el tiempo de carga y la cremallera tamaño binario Binario comprimido para un "hola mundo" la aplicación mide aproximadamente 2.5-3meg ( más pequeño en 4.x me dicen ) vrs sobre 300k para obj-c. La diferencia obtiene cada vez menos cuanto más agrega, ya que solo incluye los gustos de system.dll una vez. Tiempo de carga para MT vrs Obj-c, haciendo lo mismo en Al mismo tiempo, está lo suficientemente cerca de lo mismo. Cualquiera puede ser hecho para cargue lentamente (solo haga algo largo en su FinishedLaunching sin ponerlo en otro hilo).
El respondedor continúa diciendo que siente que es más productivo con MonoTouch que Objective-C. YMMV.