我一直在开发一个模拟器作为副业,现在我正在处理效率问题。我已经成功地摆脱了所有慢速的事情,比如大量的SDL_RenderDrawPoint,但现在我卡住了。
我已经将问题缩小到了SDL_PollEvent。我简化了我的主循环和事件循环,使它们看起来类似于一个简单的SDL教程。当我注释掉事件循环时,模拟器运行得非常快。我还使用了Visual Studio性能分析器进行检查,确实,SDL_PollEvent占用了约94%的CPU时间。 我的模拟器完成所有操作的地方是在
不幸的是,我无法在另一个项目中复制这个结果,所以我很困惑。
在轮询事件之前,我应该做些什么?
我还有其他的调试方法吗?
目前,我使用的是Windows 10,Visual Studio 2019和SDL 2.0.10。
我已经将问题缩小到了SDL_PollEvent。我简化了我的主循环和事件循环,使它们看起来类似于一个简单的SDL教程。当我注释掉事件循环时,模拟器运行得非常快。我还使用了Visual Studio性能分析器进行检查,确实,SDL_PollEvent占用了约94%的CPU时间。 我的模拟器完成所有操作的地方是在
ppuNptr->cycle()
,只占用了1.48%的资源。不幸的是,我无法在另一个项目中复制这个结果,所以我很困惑。
在轮询事件之前,我应该做些什么?
我还有其他的调试方法吗?
目前,我使用的是Windows 10,Visual Studio 2019和SDL 2.0.10。
SDL_PollEvent
“返回”的事件都不是您要检查的那些,这意味着循环会迭代很多次并频繁调用SDL_PollEvent
。 - undefinedevent_to_string()
? - undefined