unity3d 加载卡顿,File.Exists 罪魁祸首之天坑

7 篇文章 0 订阅
5 篇文章 0 订阅

File.Exists 是用来判定文件是否存在,然后进行加载的常用逻辑,但也是造成加载卡顿的 罪魁祸首,
这里测试,在华为v10 ,1加手机,会特别明显, 我用moto手机测试感觉没什么问题,也许跟手机装的app数量也有关系,总之对于这方法尽量避免使用,
下面说明一下这个方法的测试情况:

测试机器:华为v10
目录下文件数量:13749
判定不存在的文件:消耗30ms-45ms不等
判定存在的文件:消耗0.2ms~0.5ms不等
结果:大概快了100倍。
如果加载文件多,这些耗时加起来就一个大问题了

尝试测试unity引擎问题
测试机器:华为v10
目录下文件数量:14612
1、unity4 mono,File.Exists会消耗31~71ms
2、unity2017 mono, File.Exists会消耗30~50ms
3、unity2017 il2cpp, File.Exists会消耗30-45ms
4、unity2017 il2cpp 用FileInfo获取Exists属性 70~100ms
5、unity2017 il2cpp 用File.Open读取不存在的文件,40~90ms
6、android app,native C直接调用stat和lstat系统api,其中stat:1540ms,lstat:1540ms,合计30~80ms
7、android app,native C用fopen代替stat和lstat,判断打开成功与否,20~45ms,
结果:可以断定与unity4,unity2017,mono,il2cpp,都无关,

可知File.Exists在手机上存在很大的问题, 所以我们的次级解决方案是每做一次File.Exist的就进行标记缓存,避免多次加载同一个文件的时候造成多次伤害,最好的方案就是确保加载的文件都的一一存在的!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值