我正在使用无限 while(true) 循环测试非常简单的线程,以检查分配给这些较新线程的 CPU 时间。我使用了 FPlatformTime::Cycle64 而不是任何专门的线程分析器。
我使用这种时间测量来不断检查 CPU 为这些新线程投入了多少时间。
结果是这样的:除了创建线程后的最初几百毫秒外,CPU总是会给线程足够的时间,使得连续两次读取之间的时间差总是(字面意思是一半)一小时的测试)总是少于 0.5 毫秒(很多)。
一切都很好,花花公子。我在 UE5 上重复了完全相同的测试,我被更大的增量时间测量结果震惊了。很多读数显示0.75ms+,很多甚至超过1.5ms。
我在这里问是否有人知道为什么会发生这种情况,以及在 UE5 中获得相同结果的潜在方法?
顺便说一句,该项目只是两个引擎上的全新第一人称项目。
另外,我认为这与线程的优先级无关,因为我尝试了不同的优先级,但这需要我进行更多测试才能确定。
顺便说一句,我使用的线程是在 WindowsApplication.cpp 中完成的简单 winapi 线程,所以据我所知,这种现象不可能是由于 UE5 新作业调度造成的。