如何加快MonoTouch的编译时间?(How to speed up MonoTouch comp

2019-07-17 10:41发布

这是众所周知的是

如果编译甚至需要15秒,程序员会得到,而编译器运行无聊,切换到阅读的洋葱 ,将在他们吸并杀死生产力小时。

我们的MonoTouch应用程序需要40秒的MacBook Air上编译调试/仿真器的配置。

我们在解决约10组件。
我们还链接到的一些本地库gcc_flags

我敢肯定有办法,以优化的编译时间,我是不知道的,这可能与引用,链接,你还是要坚持。

我问在希望有人用更好的知识比我会编(没有双关语意)的提示和事情的清单来检查,以减少MonoTouch的编译时间建立调试这个问题。

不要建议硬件优化或优化不直接相关的MonoTouch 。

Answer 1:

建造时间的改进Xamarin.iOS 6.4

Xamarin.iOS 6.4有显著编译时间的改进 ,现在还只发送代码更新位给装置的选项。 你自己看:

阅读详细信息并学习如何在启用增量编译Rolf的职位 。

发展2013视频

这些内容的更新和扩展版本可以在的视频中可以看出高级的iOS建立力学说话我给在进化2013 。

原来的答案

还有影响建造速度的几个因素。 但是他们大多有冲击力的设备构建,包括使用你提到的管理连接的。

管理链接

对于设备 ,那么所有链接是最快的,其次是链接SDK和(在最后) 不要链接 。 其原因是,链接器可以消除代码比AOT编译器可以更快地建立它(净收益)。 也较小。应用程序会更快上传到您的设备。

对于模拟器不链接永远是更快,因为没有AOT(JIT的使用)。 除非你想测试他们(它仍然不是做设备运行快),则不应使用其他连接选项。

设备技巧

  • 构建单一架构(例如ARMv7的)大于FAT二进制(例如ARMv7的+ ARMV7s)更快。 较小的应用程序也意味着较少的上传到设备的时间;

  • 默认 AOT编译器(单声道)比使用LLVM编译器快了很多。 但是后来会产生更好的代码,同时还支持ARMv7s,的Thumb2;

  • 如果你在你的.app捆绑大型资产则需要一定的时间来部署/上传到你的应用程序(因为他们必须签署每次)。 我写了一个博客张贴关于如何解决这个-它可以节省大量的时间,如果你有大量的资产;

  • 目标文件缓存在MonoTouch的5.4执行。 有的建立将是一个速度快了很多,但其他人不会(当缓存必须清洗),更快(但从未慢;-)。 更多信息,为什么这种情况经常发生在这里 )。

  • 调试版本需要更长的时间,因为符号,运行dsymutil和,因为它最终被更大,更多的时间来上传到设备。

  • 发布版本将默认(你可以将其关闭),执行组件的IL条。 部署(较小的.app)到设备时可能获得回来 - 那只需要一点时间。

模拟器技巧

  • 就像前面说尽量避免链接,因为它会花费更多的时间,将需要复制组件(而不是符号链接它们);

  • 使用本机库变慢了,因为我们不能重复在这种情况下,共享simlauncher主要的可执行文件,并需要问GCC编译器。一个用于应用程序(这就是慢)。

最后,如有任何疑问时间吧! 和我的意思是,你可以添加--time --time到您的项目extra mtouch arguments来查看每个操作后,时间戳:-)



Answer 2:

这是不是真的意味着作为一个答案,而是一个临时占位符,直到有一个更好的。
我发现这句话被勒布 :

看看你的项目的编译选项,并确保“链接的行为”是默认的“链接SDK组件”。

如果它显示“不要链接”,那么你会遇到长的建造时间(它在dsymutil很大一部分)。

我不知道,如果它仍然是相关的,但因为MonoDevelop中显示一个警告标志时,我选择了这个选项,它似乎并没有太多影响性能。



Answer 3:

你不能指望你的编译器将lightninng快不理解,它需要做的一切。 更大的应用程序自然会需要更长的时间。 不同的语言或同一语言的不同编译器可以对需要多长时间来编译代码的巨大差异。

我们有一个项目,该项目将需要近2分钟编译。 你最好的解决办法是找出一种方法来减少的时候,你编译代码的数量。

而不是试图解决1行代码和重建,一遍又一遍。 得到一组的人一起讨论这个问题。 或者创建你想工作的3件或4事情的清单,完成他们全部然后进行测试。

这些只是一些建议,他们将不会所有情况英寸



文章来源: How to speed up MonoTouch compilation time?