在 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++ 中测试代码速度的最佳方法,或者尝试没有意义?