【发布时间】:2011-11-19 08:19:12
【问题描述】:
我正在编写一个小程序,它必须对一个大数组(最多 400 万个文本字符串)进行排序。似乎我在这方面做得很好,因为 radixsort 和 mergesort 的组合已经将原始 q(uick)sort 执行时间缩短了不到一半。
执行时间是重点,因为这是我用来基准测试我的一段代码的时间。
我的问题是:
有没有比只计算执行时间更好(即更可靠)的方法来对程序进行基准测试?它有点工作,但是如果运行两次,相同的程序(运行相同的后台进程)通常执行时间略有不同。
这有点违背了检测小改进的目的。几个小的改进可以加起来一个大的......
提前感谢您的任何意见!
结果:
我设法让 gprof 在 Windows 下工作(使用 gcc 和 MinGW)。与我的普通编译器 (tcc) 相比,gcc 的行为很差(考虑到执行时间),但它给了我一些见解。
【问题讨论】:
-
@delnan:是的,因为用于详细分析的工具是特定于语言的。 Prolog 的
time/1和 IPython 的timeit在 C 程序中不起作用:)
标签: c sorting benchmarking