【发布时间】:2013-03-14 07:17:18
【问题描述】:
我需要一个项目的帮助。基本上我需要测量一些排序算法的时钟滴答声。由于它们都使用比较,有时还使用交换函数,因此我将它们设计为接受这些作为回调函数。
为了测量我写的时钟滴答声:
static clock_t t1, total;
template<typename T>
bool less_default(T & left, T & right){
t1 = clock();
bool v = left < right;
t1 = clock() - t1;
total += t1
return v;
}
当我实际运行算法时,total 或 t1 都没有反映任何变化。就好像引用它们的代码行从来没有写过一样。
没有任何作用。函数调用时甚至不是简单整数的增量。
是不是静态全局变量不能在模板函数内部改变?
我不明白我在这里做错了什么。
【问题讨论】:
-
您是从同一个文件调用的吗?它在 .h 文件中吗?
-
考虑将
static更改为extern并在main()源文件(或一些其他合适的位置)。 -
考虑衡量一百万个对象的比较,而不是一个对象。请使用除全局变量之外的其他内容。
-
当 T 是一个非常大的数组并且比较每个元素时,我确信刻度应该大于 0。然而这并没有发生。
-
你怎么知道刻度不大于零?您有多个相同值的副本。你在增加哪一个?你检查的是哪一个?是同一个吗?你怎么知道?你能把递增的函数与打印值的函数联系起来吗?
标签: c++ function templates variables global