有没有比定时更好的方法来对C程序进行基准测试?

Den*_*nis 12 c sorting benchmarking

我正在编写一个小程序,必须对一个大型数组(最多400万个文本字符串)进行排序.似乎我在这方面做得很好,因为radixsort和mergesort的组合已经将原始q(uick)排序执行时间减少了不到一半.

执行时间是主要的一点,因为这是我用来我的代码进行基准测试的.

我的问题是:

是否有更好的(即更可靠的)基准测试程序的方式,而不仅仅是执行的时间?它有点工作,但是如果运行两次,相同的程序(运行相同的后台进程)通常具有稍微不同的执行时间.

这有点挫败了检测小改进的目的.一些小的改进可能会增加一个很大的...

提前感谢任何输入!

结果:

我设法让gprof在Windows下工作(使用gcc和MinGW).与我的普通编译器(tcc)相比,gcc表现不佳(考虑执行时间),但它给了我很多洞察力.

Fre*_*Foo 11

尝试一个分析工具,它还会显示程序花费时间的位置.gprof是经典的C分析工具,至少在Unix上是这样.

  • +1的想法.我会推荐Valgrind的Callgrind而不是gprof.如果你在KDE,Valgrind和Callgrind都有一个很好的gui前端,但我不记得这个名字了. (2认同)