Quanto è grande un'app per iPhone Objective-C rispetto a un'app MonoTouch?
-
22-07-2019 - |
Domanda
Sto pensando di utilizzare MonoTouch per lo sviluppo di alcuni iPhone, ma la dimensione del payload è un fattore importante.
Per un utente che non ha mai installato Mono sul proprio iPhone prima, quale sarebbe la dimensione di un Objective-C " Hello World " l'app può essere confrontata con un MonoTouch "Hello World" app?
Più specificamente, qual è il ca. numero di byte che devono essere scaricati e qual è il valore approssimativo. numero di byte utilizzati una volta installato?
Soluzione
A " Hello world " programma in Objective-C occupa 50 & nbsp; KB (intera cartella .app). Con MonoTouch, un simile "Ciao mondo" l'app occupa 5 & nbsp; MB (intera cartella .app), il che non è affatto male considerando che ha un runtime con garbage collection al suo interno.
Altri suggerimenti
In 1.5 Monotouch
Una build di rilascio - che è un'applicazione creata con una licenza di distribuzione - e con nient'altro che le impostazioni di progetto predefinite, è di 5 & nbsp; MB. Di quel 4.3 & nbsp; MB è l'eseguibile binario.
Nella mia esperienza spesso aumentano fino a 10 & nbsp; MB e i forum dipingono la stessa immagine. L'appstore riporta la dimensione decompressa, tuttavia vengono scaricati zippati. L'ho compresso con circa 3 & nbsp; MB che, anche su un 3G, va bene.
A mio avviso, la maggior parte delle persone non guarderà la dimensione del file prima di scaricare un'app, né se ne preoccuperà particolarmente. Il limite dell'app store per i download 3G è ora di 20 & nbsp; MB , che rientra ampiamente nelle dimensioni di MonoTouch.
Per interpretare l'avvocato del diavolo, sì, è molti ordini più grande dell'equivalente Obiettivo-C e potrebbe spaventare alcune persone preoccupate di occupare 4-10 MB in più del loro spazio di 16 GB. Tuttavia, c'è anche il time to market e gli strumenti esistenti disponibili per .NET. Sviluppo e costruisco tutte le mie app MonoTouch in Visual Studio 2010, quindi le collaudo su Mac e non credo che nemmeno Apple sostenga che il loro IDE sia vicino al leader del settore.
Da questa domanda su MonoTouch e dimensione dei file eseguibili :
MonoTouch non si traduce in Obj-c. Si compila quindi in .NET IL lo compila (come farebbe un compilatore JIT, ma prima che lo sia corri - quindi "in anticipo" compilatore) nel codice ARM nativo.
così:
Obj-C - > GCC (o LLVM) - > Codice ARM
vrs MT:
C # - > IL - > (Compilatore AOT) - > Codice ARM
I binari di output in 3.x sono più grandi perché includi anche a molto del .NET framework (beh, Mono Framework, ma lo stesso), quindi se tu, ad esempio, usi System.Xml, devi includerlo nell'output - lo stesso con System.dll ecc. Il linker è piuttosto intelligente, ma l'output i binari saranno sempre più grandi .
Per me, l'unica cosa importante è il tempo di caricamento e la compressione dimensione binaria. Binario zippato per un "ciao mondo" l'app è circa 2,5-3meg ( più piccolo in 4.x Mi è stato detto ) vrs su 300k per obj-c. La differenza diventa sempre meno tanto più aggiungi, in quanto include solo artisti del calibro di system.dll una volta. Tempo di caricamento per MT vrs Obj-c, facendo le stesse cose a allo stesso tempo, è abbastanza vicino allo stesso. O uno può essere fatto per caricare lentamente (basta fare qualcosa di lungo nel tuo FinishedLaunching senza metterlo su un altro thread).
Il rispondente continua dicendo di sentirsi più produttivo con MonoTouch di Objective-C. YMMV.