c++ - 在调试器中运行代码如何让它更快?

标签 c++ visual-studio visual-c++ performance

这从来没有发生在我身上。在 Visual Studio 中,我有一部分代码执行了 300 次,我在每次迭代时都使用性能计数器对其进行计时,然后取平均值。 如果我在调试器中运行代码,我得到平均 1.01 毫秒,如果我在没有调试器的情况下运行它,我得到 1.8 毫秒。

我关闭了所有其他应用程序,然后重新启动,我尝试了很多次:总是在同一时间。

我正在尝试优化我的代码,但在我开始更改代码之前,我想确定我的时间安排。有东西可以比较。

什么会导致这种奇怪的行为?

编辑:

一些说明:

我正在运行相同的已编译代码:发布版本。唯一的区别是(F5 vs CTRL-F5) 因此,不应涉及编译器优化。

由于每次计算的时间都非常小,我改变了基准测试的方式:我现在对 300 次迭代进行计时,然后除以 300。我得到了相同的结果。

关于缓存:代码正在做一些图像互相关,每次迭代都有不同的图像。图像中的数据不会修改处理步骤。所以,我认为缓存不是问题。

最佳答案

我想我明白了。

如果我在运行测试之前添加 Sleep(3000),它们会给出相同的结果。

我觉得跟加载misc有关系。 dll。在调试器中,dll 在执行任何代码之前加载。在调试器之外,dll 是按需加载的,在定时器启动后加载一个或多个。

谢谢大家。

关于c++ - 在调试器中运行代码如何让它更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1757110/

相关文章:

c++ - 为什么 gdb 不能附加到由 inetd 调用的服务器应用程序?

visual-studio - 是否应该将 .nuget 文件夹添加到版本控制中?

c++ - 变量赋值和逗号运算符

visual-studio - 在 .NET/Visual Studio 中定义 TRACE 常量

c++ - __attribute__((format(printf, 1, 2))) 用于 MSVC?

c++ - 通过接近 MAX_PATH 长度的 Windows 网络访问文件

c++ - 在 C++ 中,如何在类和函数的 header 中编写完整的实现(可能是模板化的)

c++ - 如何改变被其他线程占用的对象共享指针指向?

c++ - GCC:如何只生成行号调试信息?

visual-studio - F# 编辑器中是否支持折叠所有功能节点?