我正在考虑将MonoTouch用于iPhone开发,但有效载荷大小是一个重要因素。
对于之前从未在iPhone上安装过Mono的用户,将Objective-C“Hello World”应用程序的大小与MonoTouch“Hello World”应用程序进行比较会是什么?
更具体地说,约为什么?需要下载的字节数,大约是多少。安装后使用的字节数?
答案 0 :(得分:17)
Objective-C中的“Hello world”程序占用50 KB(整个.app文件夹)。 使用MonoTouch,一个类似的“Hello World”应用程序占用5 MB(整个.app文件夹),考虑到它有一个带有垃圾收集的运行时,这一点都不错。
答案 1 :(得分:11)
在1.5 Monotouch中
发布版本 - 使用分发许可证构建的应用程序 - 除了默认项目设置外,只有5 MB。其中4.3 MB是二进制可执行文件。
根据我的经验,它们通常会增加到10 MB,论坛也会画出相同的图片。 appstore报告解压缩的大小,但是它们是压缩下载的。拉链大约3 MB,即使在3G上也没问题。
http://i40.tinypic.com/2jadrpd.png
在我看来,大多数人在下载应用程序之前不会查看文件大小,也不会特别小心。 3G下载的appstore限制现在为20 MB ,这完全在MonoTouch大小范围内。
扮演魔鬼的拥护者,是的,它比Objective-C等价物大许多订单,可能会吓跑一些担心占用16 GB空间4-10 MB的人。但是,还有上市时间和现有的.NET工具。我开发和在Visual Studio 2010中构建我的所有MonoTouch应用程序,然后在Mac上进行测试,我认为即便是苹果公司也认为他们的IDE与行业领导者非常接近。
答案 2 :(得分:8)
来自MonoTouch and Size of Executables上的这个问题:
MonoTouch不会转换为Obj-c。然后它编译成.NET IL 编译(以与JIT编译器相同的方式编译,但在它之前) 运行 - 因此“提前”编译器)到本机ARM代码。
这样:
Obj-C - > GCC(或LLVM) - > ARM代码
vrs MT:
C# - > IL - > (AOT编译器) - > ARM代码
3.x中的输出二进制文件较大,因为您还包含一个 很多 .NET框架(好吧,Mono Framework,但是相同),所以如果 你,例如,使用System.Xml,它必须将其包含在输出中 - 与System.dll等相同。链接器非常智能,但输出 二进制文件总是更大。
对我来说,唯一重要的是加载时间和拉链 二进制大小。 “hello world”应用程序的压缩二进制文件大约是2.5-3meg ( 4.x我被告知)vrs关于 300k 的obj-c。区别 你添加的越多越少,因为它只包括喜欢的东西 system.dll一次。加载MT vrs Obj-c的时间,做同样的事情 同时,也足够接近相同。任何一个都可以做到 缓慢加载(只需在FinishedLaunching中做一些长时间运行 没有把它放在另一个线程上。)
回答者继续说他觉得MonoTouch比Objective-C更有效率。 YMMV。