首页 > 解决方案 > 从 Visual Studio 启动时,发布构建比“正常”启动时更快

问题描述

我有一个用于可视化工件的 Qt 应用程序。因此我们使用 Qt 的 OpenGL 接口QGLWidget。在这个应用程序中,我们有时必须加载和可视化大量数据(高达 4GB 的 3D 双点)。然后应用程序变慢,但这并不重要,因为性能不是这里真正的问题。渲染一帧通常需要大约 100 毫秒。

我们正在解决的问题如下: 在那一刻,当程序创建大量数据并且我们已经加载它时,我们通常需要大量的 RAM。从 Visual Studio 启动应用程序时,内存分配比“正常”启动时快很多。

在任务管理器中,我可以看到,增加所需内存的速度非常不同。虽然一个应用程序可以在一秒钟内分配大约 1GB 的内存,但另一个应用程序每秒只能分配大约 50MB。

我的问题是,从 Visual Studio 启动应用程序有什么区别?两次,我们都使用 VS 的“默认”发布版本。什么会引发此类问题,我如何确定这些问题的根源?

附加信息:此应用程序基于 Qt5。这个应用程序有一个 10 年前的版本,使用 Qt3 和 Qt4 编程。我们不再拥有此应用程序的来源。当使用 Qt3/4 时,我们不会处理这些问题。旧应用程序的行为似乎与使用 VS 启动 Qt5 应用程序时相同。
我们正在使用 Visual Studio 2015 和 Qt5.9.1

我跟踪了 CPU 使用率和内存使用率:

使用 Visual Studio:
在此处输入图像描述

没有 Visual Studio:
在此处输入图像描述

你可以看到,第一个内存大小的增加比第二个快得多。

标签: c++visual-studioqt

解决方案


事实证明,您看到的不同之处在于,当附加了调试器时,操作系统/调试器将锁定一些页面,以便调试器可以立即使用它们。这是一个例外情况,因为您附加了一个调试器,一般不建议这样做。我相信没有快速解决办法——也许只能以不同的方式使用 opengl。

另请参阅可能具有相同原因的此答案:

附加调试器的 C++/opengl 应用程序运行更流畅


推荐阅读