找回密码
 立即注册
查看: 397|回复: 4

ILRuntime性能测试

[复制链接]
发表于 2021-8-7 22:28 | 显示全部楼层 |阅读模式
我们公司有一个Unity原生开发语言C#写的项目,目前已经在安卓测试过多次,上架IOS在考虑热更,所以对ILRuntim进行性能测试,在测试过程中已经按照官方文档进行了CLR绑定和生成Release的Dll,并且在非Editor环境下测试。
我的测试环境:ILRuntime 1.6.3 ,MuMu模拟器和华为手机
50万次的加法运算

ILRuntime使用全局变量:UnitTest_Performance50万 Elapsed time:1050ms, result = 445698416  ,Tick:10527445
ILRuntime使用局部变量:UnitTest_Performance50万 Elapsed time:534ms, result = 445698416  ,Tick:5436060
Unity原生代码:mono UnitTest_Performance50万 Elapsed time:1ms, result = 445698416  ,Tick:19900
xlua中lua:[10:42:43.8636]LUA: cost: 4.00ms
C#测试代码
public static void UnitTest_Performance3()
{
    var before = DateTime.Now.Ticks;
    System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
    sw.Start();
    int cnt = 0;
    for (int i = 0; i < 500000; i++)
    {
        cnt += i;
    }
    sw.Stop();
    var tick_diff = DateTime.Now.Ticks - before;
    Debug.Log(string.Format("UnitTest_Performance50万 Elapsed time:{0:0}ms, result = {1}  ,Tick:{2}", sw.ElapsedMilliseconds, cnt,tick_diff));
}
Lua测试代码
local begin = os.clock()
local cnt = 0;
for i = 1, 500000 do
    cnt = cnt + i;
end
local diff =  os.clock() - begin;
print(string.format("cost:%.2f ms", diff*1000))从测试结果可以看到在Lua做加法运算的性能会比ILRuntime中好一百倍左右,对于需要大量运算的确实如ILRuntime的文档所以不应该放热更代码中
为什么不测试热更调主工程?

在这个项目中,从热更调用主工程代码,相对比较少,大部分都是在热更工程中使用计算,比如对象管理,战斗部分,玩法逻辑。
从ILRuntime的文档中提到跨域调用会比Lua快很多
空Update也耗时

对于MonoBehaviour中的空Update,当执行上千次时,耗时在0.1ms,所以要去掉空内容的Update
建议

栈和堆差别非常大

上面局部变量和全局变量的耗时差别很大,是因为局部变量是存储在栈中,而全局变量是存储在堆中,一定要注意在进行遍历一个列表时,在方法内先使用local xx = 全局变量,这样对于性能的提升是非常有效的
逻辑运算问题会放大数百倍

如果项目计划使用ILRuntime热更,强烈建议在项目初期就接入,这样能及早发现逻辑代码效率问题,及早解决掉。
一定要仔细阅读官方的文档,避免踩到雷区,比如foreach会产生GC Allow,热更代码中避免频繁大量的计算和空函数调用,对于有很多的空Update也需要去掉
不要使用foreach

在每秒执行的update中使用for会比foreach性能好很多
发表于 2021-8-7 22:37 | 显示全部楼层
这种测试毫无意义,除非你游戏里的代码都是这种for循环
发表于 2021-8-7 22:45 | 显示全部楼层
然而我们游戏很多逻辑代码就是这种for循环
发表于 2021-8-7 22:49 | 显示全部楼层
之前有测试过,问题主要在于for循环,只要是进行大量的for循环都会慢很多。
发表于 2021-8-7 22:55 | 显示全部楼层
纯计算是比原生慢40~100倍,实际也没有那么多大量的计算
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 02:46 , Processed in 0.090898 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表