c++ - 如何对 C++ 代码的性能进行基准测试?

标签 c++ algorithm data-structures benchmarking

<分区>

我开始认真研究算法和数据结构,并且有兴趣学习如何比较我可以实现 A&DT 的不同方式的性能。

对于简单的测试,我可以获取某项运行之前/之后的时间,将其运行 10^5 次,然后计算运行时间的平均值。我可以按大小对输入进行参数化,或对随机输入进行采样,并获得运行时间与输入大小的列表。我可以将其输出为 csv 文件,并将其输入 pandas。

我不确定是否有警告。我也不确定如何衡量空间复杂性。

我正在学习用 C++ 编程。是否有人性化的工具来实现我想要做的事情?

最佳答案

基准测试代码并不容易。我发现最有用的是 Google benchmark library.即使您不打算使用它,阅读一些示例也可能会有所帮助。它有很多可能性来参数化测试,将结果输出到文件,甚至向您返回算法的大 O 符号复杂性(仅举几例)。如果您熟悉 Google 测试框架,我建议您使用它。它还使编译器优化成为可能,因此您可以确保您的代码没有被优化掉。

CppCon 2015: Chandler Carruth "Tuning C++: Benchmarks, and CPUs, and Compilers! Oh My!" 上也有关于基准测试代码的精彩讨论。 .有很多关于您可能犯的错误的见解(它也使用谷歌基准测试)

关于c++ - 如何对 C++ 代码的性能进行基准测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49044422/

相关文章:

c++ - 在 Windows 上使用 Boost.Asio 的半并发 ICMP ping

c++ - 函数指针总是初始化为 NULL 吗?

algorithm - 在图中找到距离至少为 D(常数) 的两条路径

python - 最小路径总和中的 UnboundLocalError

performance - 具有内存限制的系统的哈希表

c++ - 无法在 C++ lambda 表达式中调用类成员函数

C++ 后缀表达式未定义与未指定行为

algorithm - 在快速排序中,如果拆分为 5 : n-5, 那么时间复杂度将是?

选择具有最高点数但具有给定成本的玩家的算法

java - 给定的零索引数组 & 该数组的平衡索引