参考
https://zhuanlan.zhihu.com/p/19972689?refer=indieace
https://blogs.unity3d.com/cn/author/josh/
从一些其他人的博客和IL2CPP开发人员的博客中可以理解出IL2CPP是未来的趋势。并且现在也在不断的完善中。对于编译时间太长,推测他们可能会像ios采用不剥离模式,运行标准库,到时可能会减少编译时长(猜测)
IL2CPP 和 Mono 性能对比
测试机型 Lenovo VIBE
|
Times | IL2CPP |
Mono |
Find |
10000 |
36 |
34 |
GetComponent |
10000 |
12 |
6 |
CreatePrimitive |
10000 |
633 |
716 |
AddChild |
10000 |
238 |
258 |
Mathf.Acos |
10000 |
0 |
3 |
AddComponent |
10000 |
1097 |
835 |
Resource.Load |
10000 |
132 |
134 |
AssetBundle.LoadFormFile |
100 |
154 |
192 |
TOTAL |
|
2310 |
2203 |
多次测试数据有变动但波动很小。
Il2cpp 和mono 整体性能差不多。
在 add get component 上 il2cpp劣于 mono, Math上il2cpp 要略强于mono。
IL2CPP开发中注意点
和IOS相同,对于C# JIT的东西不允许。
System.Reflection.Emit库中的东西不能使用。
对于外部引用的库文件(自己的或者第三方的),在IL2cpp.exe 生成c++代码时会进行链接,如果代码中这些库是其他平台所需的,或者不能正确引用的,将这些代码注掉或者用平台宏定义包含起来,不然会链接失败。
IL2CPP APK安装包注意点
Il2cpp 第一次安装正常。
在安装过相同包名的后 卸载后再次安装 启动会报错
Failed to extract resources needed byil2cpp
重启手机后没问题。
Il2cpp 覆盖安装未见异常