在 Visual C++ 中测量操作速度的最佳方法

Posted

技术标签:

【中文标题】在 Visual C++ 中测量操作速度的最佳方法【英文标题】:Best way to measure the speed of an operation in Visual C++ 【发布时间】:2012-09-11 11:38:39 【问题描述】:

我在 Visual Studios 中使用 MFC。我想知道在这个特定的 IDE 中测量操作(例如函数 A 与函数 B)的速度/效率的最佳方法是什么。这可以用断点来完成吗?

【问题讨论】:

可能相关:***.com/q/12340824/596781 【参考方案1】:

不,使用QueryPerformanceCounter (docs) 来准确测量速度。从 @MadKeithV 的 cmets 来看,这似乎不是一个好的解决方案,因为 CPU 速度缩放(根据当前负载降低 CPU 速度)可能会改变 CPU 滴答长度。

使用一个好的分析器是一个更好的主意,或者只是使用clock_t 来测量。

【讨论】:

这对于具有速度扩展功能的处理器可能很危险 - 您没有统一的刻度长度。 @MadKeithV 啊,我不知道。那你会用什么代替呢?我确定有工具,不确定 valgrind 或其他东西是否可以测量速度 如果操作足够长(以毫秒为单位),只需简单的时钟时间,否则是时候打破分析器了。 clock_t 对我来说听起来很像:) 干杯,伙计们【参考方案2】:

衡量操作效率的一个好方法是通过分析(参见例如How is profiling different from logging?) - 分析旨在向您展示在您的程序、特定函数、行甚至语句中花费的时间。

如果您的操作花费的时间足够长,您还可以使用简单的“挂钟时间”(例如您平台的 GetTime 等效项)来计算通话时间 - 例如如果单个操作需要多毫秒。请注意,在存在多线程的情况下,将其分解为实际性能可能非常棘手 - 您应该确切地知道您在测量什么。

【讨论】:

【参考方案3】:

如果您有终极版,它有相当不错的内置性能分析器。否则,请使用外部分析器。

【讨论】:

以上是关于在 Visual C++ 中测量操作速度的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

在没有分析器的情况下在 C++ 中测试代码速度的最佳方法,或者尝试没有意义?

在 Mac OS X 上分析数学密集型 C++ 应用程序以提高速度的最简单/最佳方法是啥?

C++ 中的 HDD 基准测试 - 测量的传输速度太快

Visual C++ 中顺序对话框的最佳实践是啥?

Visual Studio 2008下的C++项目结构

Visual studio 2010 C++用Release运行是单线程吗?怎样提高运算速度?