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

时间:2016-06-15 11:29:34

标签: c# c++ unity3d

在这里,我可以看到Unity文档说它比本机代码慢50%:http://docs.unity3d.com/412/Documentation/ScriptReference/index.Script_compilation_28Advanced29.html

这里说有一个IL2CPP编译器,它获得编译成本机代码的c ++代码。那么它现在是在创建本机代码,还是速度慢了50%? :) http://blogs.unity3d.com/2015/05/06/an-introduction-to-ilcpp-internals/ http://blogs.unity3d.com/2014/05/20/the-future-of-scripting-in-unity/

1 个答案:

答案 0 :(得分:9)

您引用的Unity文档非常陈旧,即使在撰写本文时,我也很想知道这些性能数据。一般来说,衡量和报告的表现要比50%表达的数字要复杂得多。

如果您想了解有关IL2CPP的更多信息,请查看此blog post系列。

根据我们在Unity的基准测试,我们看到使用IL2CPP的脚本绑定代码的性能比使用Unity版本的Unity更好。您可以找到我们发布的一个基准here

但请注意以下几点:

  • Unity使用旧版Mono运行时(大约2011年)。较新的版本更好 - 我们正在努力升级运行时。
  • 大多数游戏代码不受脚本限制,通常是GPU绑定的。
  • 生成的C ++代码仍然提供托管语言的安全性,因此它会进行数组边界检查。
  • Mono AOT和IL2CPP编译器之间的性能差异将根据平台而有所不同。在某些平台上,Mono AOT编译器生成机器代码以及C ++编译器。在其他平台上情况并非如此。