提问人:skrovno_CZ 提问时间:9/3/2023 最后编辑:Mofiskrovno_CZ 更新时间:9/4/2023 访问量:80
将 printf 用于 Windows 控制台时,Visual Studio 发布代码比调试代码慢
Visual Studio Release code is slower than Debug code when usaing printf to a Windows console
问:
我正在做一个项目来使用 CMD 绘制形状,但我发现了一个奇怪的行为。当我使用调试模式编译代码时,运行的程序较慢,但控制台的输出速度更快(60 FPS)。当我将其编译为 Release 代码时,运行程序的速度提高了大约 10 倍,但输出图像滞后。(约4帧/秒)printf
编译为 Release 时 iostream
库有什么问题吗?在这两种情况下,我的统计数据(在链接的道琼斯波纹管视频中)都显示 60 FPS,但发布代码的外观感觉像是 4 FPS。
我只有带有调试代码的视频。在调试代码中,我的主循环大约是每秒 200 000 个刻度,感觉像是 60 FPS,而发布代码是每秒超过 1 000 000 个刻度,但似乎是 4 FPS。printf
我做了一个帧上限,将其限制在 60 FPS 以避免任何问题。
同样奇怪的是,它在 Windows 10 CMD 中滞后,但在 Windows 11 CMD 中却没有滞后。 (我正在使用 Visual Studio 10 在 Windows 10 机器上使用 Windows 2017 预设编译它)
这真的很令人沮丧,因为获得流畅体验的唯一方法是始终在调试模式下运行程序。(或在 Windows 11 计算机上运行发布版本)
发布代码是否使用与调试代码不同版本的 Wnidows CMD?Visual Studio 中的发布代码是否有任何设置可以修复它?
这是执行 Debug 输出而不是 Release 时的平滑结果。视频
谢谢。
答: 暂无答案
评论
cmd.exe
本来就很慢。尝试在(从 App Store 安装)中运行它,这就是 Windows 11 默认使用的 AFAIK,这就是它运行速度更快的原因。Terminal
printf
std::cout
printf
printf
printf
printf c_str()