c++ - 从 Visual Studio 启动时,发布构建速度比启动 "normally"更快

标签 c++ visual-studio qt

我有一个 Qt 应用程序,用于可视化工件。因此我们使用 Qt 的 OpenGL 接口(interface) 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:
enter image description here

没有 Visual Studio:
enter image description here

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

最佳答案

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

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

C++/opengl application running smoother with debugger attached

关于c++ - 从 Visual Studio 启动时,发布构建速度比启动 "normally"更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55164217/

相关文章:

c++ - 当鼠标悬停在 QPushButton 上时,alpha 级别为 0% 的 QPushButton 变为实心。如何用 C++ 修复 Qt(用样式表?)

c++ - 安全的 Unity 构建

c++ - 如何在ubuntu上的opencv和dlib上裁剪图像

visual-studio - 未解析的外部符号 _pathCombineW()

c++ - 使用 Lambda 和递归函数调用了解 QTimer

c++ - 当窗口管理器在 qt QML 中完成调整窗口大小时如何获得信号?

c++ - FLTK 中的线程

c++ - 如何将多个源文件转换为一个 .a 文件

visual-studio - 如何将版本添加到 “Visual Studio Version Selector” ,我的列表为空

c++ - LNK4075 : ignoring '/EDITANDCONTINUE' due to '/OPT:ICF' specification