Unity - 当前版本是否生成本地代码?

6

两者并不是互相排斥的,因为IL2CPP可能会比JIT表现更好,也可能不会。 - Steve Jessop
@SteveJessop 至少我们可以达成一致,这些都是关于获取可执行文件的不同方法论,对吧? - Narek
你在第二段中说“这里说...”时是否缺少一个链接? - NathanOliver
@Narek:当然,你的问题是“Unity是否真正使用IL2CPP?”。我只是认为假设IL2CPP能够达到.NET代码基准测试中所测得的完整性能,并推断它比原来慢50%可能有些乐观了 :-) - Steve Jessop
这比你所问的要复杂得多,而且我真的不会去烦它。实际上,要比较整个Unity管道与原生iOS或Android的速度几乎是不可能的。这些速度比较完全是荒谬的,因为Unity管道有大量额外开销,在原生应用程序中根本不存在。唯一可能使这些速度比较稍微有意义的方法是(非常奇怪地)编写一个数学测试练习,其中根本不使用两个渲染管道等。 - Fattie
1个回答

9
你所提及的Unity文档相当陈旧,即使在它发布时,那些性能数据也值得怀疑。总体而言,性能比一个50%的数字表达更加复杂。
如果你想了解更多关于IL2CPP的信息,请查看这个 博客文章 系列。
根据我们在Unity进行的基准测试,我们发现使用IL2CPP比Unity版本的Mono在脚本绑定代码方面具有更好的性能。你可以在 这里 找到我们已发布的一个基准测试。
但需要记住以下几点:
  • Unity使用一个旧版本的Mono运行时(大约是2011年)。更新的版本更好 - 我们正在努力升级运行时。
  • 大多数游戏代码不受脚本限制,通常是GPU限制。
  • 生成的C++代码仍然提供了托管语言的安全性,因此它进行数组边界检查等。
  • Mono AOT和IL2CPP编译器之间的性能差异将根据平台而异。在某些平台上,Mono AOT编译器会像C++编译器一样生成机器代码。在其他平台上则不是这种情况。

3
这是一个很棒的回答。 - Fattie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接