【发布时间】:2016-01-28 20:18:28
【问题描述】:
我目前正在尝试编写一个通用函数来测量另一个函数func 需要执行的时间。我可以用<time.h> 等计算时间。
我的方法如下所示:
void measure_time(void *(func)(), unsigned loops);
现在只要在measure_time 中打印结果就足够了(稍后我可以让measure_time 返回一些信息)。
我能够计算执行时间等等(使用<time.h>),但目前我的问题是我希望这是一个通用函数,它应该能够采用具有不同返回类型和不同参数大小/类型的各种函数“func”。
目前我不知道如何设法给measure_time 函数'func' 并让它使用我能够指定的参数执行它。
例如:
int a[1000] = {15, 53, ..., 42};
void sort_something(int *a, int n_elements) { ... };
void measure_time(sort_somthing(a, 1000), 100);
这应该使用参数“a 和 1000”调用 sort_something 100 次,并测量执行所需的时间。
如果您需要,我很乐意提供更多信息。
干杯!
最后几秒
【问题讨论】:
-
因为不同类型+参数个数的函数指针的不等式,这可能是不可能的。但是,您可以轻松地将其包装在宏中(包含对用户指定的函数的调用的宏的一部分)
-
请给我一个关于宏的粗略想法好吗?
-
您可以通过查看
qsort的方式来探索将函数传递给函数。您可以通过查找va_start等来探索可变的其他参数。
标签: c function pointers reference