alp*_*pha 9 c++ algorithm benchmarking data-structures
我开始认真研究算法和数据结构,并有兴趣学习如何比较我可以实现A&DT的不同方式的性能.
对于简单的测试,我可以获得运行之前/之后的时间,运行该事物10 ^ 5次,并平均运行时间.我可以按大小参数化输入,或者对随机输入进行采样,并获得运行时间与输入大小的列表.我可以将其输出为csv文件,并将其输入到pandas中.
我不确定是否有任何警告.我也不确定如何测量空间复杂度.
我正在学习用C++编程.有没有人性化的工具来实现我的目标?
基准代码并不容易.我发现最有用的是Google基准库.即使您不打算使用它,也可以阅读一些示例.它有很多可能性来参数化测试,将结果输出到文件,甚至返回算法的Big O符号复杂性(仅举几例).如果您熟悉Google测试框架,我建议您使用它.它还可以使编译器优化得以管理,因此您可以确保您的代码未经过优化.
关于CppCon 2015的基准测试代码也有很好的讨论:Chandler Carruth"调优C++:基准测试,CPU和编译器!哦,我的!" .您可以犯的错误有许多见解(它也使用谷歌基准测试)
它是特定于操作系统和编译器(因此特定于实现).您可以使用分析工具,您可以使用计时工具等.
在Linux上,请参阅time(1),time(7),perf(1),gprof(1),pmap(1),mallinfo(3)和proc(5)以及关于调用GCC.
另请参见本.在实践中,确保您的跑步持续足够长的时间(例如,在一个过程中至少持续一秒钟).
请注意,优化编译器可以大大改变您的程序.参见CppCon 2017:Matt Godbolt谈论"我的编译器最近为我做了什么?解开编译器的盖子"
归档时间: |
|
查看次数: |
5007 次 |
最近记录: |