继上篇IL2Cpp深坑之WeakReference之后,新坑出炉!?
试用RVO2-CS时,发现Android Mono打出来的包,在500元的安卓手机上可以跑50帧,但是Androdi/iOS IL2Cpp打包在iPhoneX上也只能跑到15帧!真机Profile实锤如下:
分析后,锁定问题代码如下:
for (int block = 0; block < workers_.Length; ++block)
{
doneEvents_[block].Reset();
ThreadPool.QueueUserWorkItem(workers_[block].step);
}
WaitHandle.WaitAll(doneEvents_);
for (int block = 0; block < workers_.Length; ++block)
{
doneEvents_[block].Reset();
ThreadPool.QueueUserWorkItem(workers_[block].update);
}
WaitHandle.WaitAll(doneEvents_);
一开始以为是ThreadPool启动线程数量大于CPU线程所致,尝试限制为CPU线程数量-1,依然无效。