我开始认真研究算法和数据结构,并有兴趣学习如何比较我可以实现 A&DT 的不同方式的性能。
对于简单的测试,我可以获得运行之前/之后的时间,运行 10^5 次,然后平均运行时间。我可以按大小对输入进行参数化,或者对随机输入进行采样,并获得运行时间与输入大小的列表。我可以将其输出为 csv 文件,并将其输入 pandas。
我不确定有没有警告。我也不确定如何测量 空间 复杂度。
我正在学习用 C++ 编程。是否有人性化的工具来实现我想要做的事情?
原文由 alpha 发布,翻译遵循 CC BY-SA 4.0 许可协议
基准测试代码并不容易。我发现最有用的是 谷歌基准库。 即使您不打算使用它,也可以阅读一些示例。它有很多可能性来参数化测试,将结果输出到文件,甚至返回算法的大 O 表示法复杂度(仅举几例)。如果您熟悉 Google 测试框架,我建议您使用它。它还使编译器优化可以管理,因此您可以确保您的代码没有被优化掉。
在 CppCon 2015 上也有关于基准测试代码的精彩讨论:Chandler Carruth “调整 C++:基准测试、CPU 和编译器!哦,我的!” .您可以对可能犯的错误有很多见解(它也使用谷歌基准)