简单线程在 UE4 和 UE5 中的行为不同

问题描述 投票:0回答:0

我正在使用无限 while(true) 循环测试非常简单的线程,以检查分配给这些较新线程的 CPU 时间。我使用了 FPlatformTime::Cycle64 而不是任何专门的线程分析器。

我使用这种时间测量来不断检查 CPU 为这些新线程投入了多少时间。

结果是这样的:除了创建线程后的最初几百毫秒外,CPU总是会给线程足够的时间,使得连续两次读取之间的时间差总是(字面意思是一半)一小时的测试)总是少于 0.5 毫秒(很多)。

一切都很好,花花公子。我在 UE5 上重复了完全相同的测试,我被更大的增量时间测量结果震惊了。很多读数显示0.75ms+,很多甚至超过1.5ms。

我在这里问是否有人知道为什么会发生这种情况,以及在 UE5 中获得相同结果的潜在方法?

顺便说一句,该项目只是两个引擎上的全新第一人称项目。

另外,我认为这与线程的优先级无关,因为我尝试了不同的优先级,但这需要我进行更多测试才能确定。

顺便说一句,我使用的线程是在 WindowsApplication.cpp 中完成的简单 winapi 线程,所以据我所知,这种现象不可能是由于 UE5 新作业调度造成的。

windows multithreading profiling unreal-engine4 thread-priority
© www.soinside.com 2019 - 2024. All rights reserved.