为什么SDL_PollEvent这么慢?

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

我一直在将模拟器编程为附带项目,现在我正在着手提高效率。我已经摆脱了像许多SDL_RenderDrawPoint一样缓慢的工作,但是现在我陷入了困境。

我设法将其范围缩小到SDL_PollEvent。 Ive简化了我的主循环和事件循环,使它们看起来类似于简单的SDL教程。当我注释掉事件循环时,模拟器运行得非常快。Ive还使用Visual Studio性能分析器进行检查,并且确实,SDL_PollEvent占用了约94%的CPU时间。

slow SDL_PollEvent

我的模拟器在其中进行所有工作的位置在ppuNptr->cycle()中,仅占1.48%。

不幸的是我无法在另一个项目中复制它,所以我很茫然。

在轮询事件之前我应该​​做些什么吗?

我还能如何调试呢?

当前在具有Visual Studio 2019和sdl 2.0.10的Windows 10上即时消息。

c++ sdl-2
1个回答
0
投票

我在对模拟器进行性能分析时也遇到了这一问题。对我来说,答案是将SDL2的版本降级为2.0.8。

我正在运行SDL2版本2.0.12,并在注释中采纳了keltar的建议,并降级为2.0.8,并且我不再遇到导致性能降低的SDL_PollEvent问题。这为我解决了这个问题,因为我的模拟器不再遇到FPS低的问题。

我将查看错误票证系统中是否已报告此问题,并从2.0.9版本开始,如果没有,则将其报告给SDL2。

© www.soinside.com 2019 - 2024. All rights reserved.