<分区>
我开始认真研究算法和数据结构,并且有兴趣学习如何比较我可以实现 A&DT 的不同方式的性能。
对于简单的测试,我可以获取某项运行之前/之后的时间,将其运行 10^5 次,然后计算运行时间的平均值。我可以按大小对输入进行参数化,或对随机输入进行采样,并获得运行时间与输入大小的列表。我可以将其输出为 csv 文件,并将其输入 pandas。
我不确定是否有警告。我也不确定如何衡量空间复杂性。
我正在学习用 C++ 编程。是否有人性化的工具来实现我想要做的事情?
<分区>
我开始认真研究算法和数据结构,并且有兴趣学习如何比较我可以实现 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/