gpt4 book ai didi

c++ - 是否可以制作一个可以调用函数作为参数然后运行并计时的计时函数?

转载 作者:行者123 更新时间:2023-11-30 01:34:50 25 4
gpt4 key购买 nike

所以我有一个作业,其中我的代码必须反复测试函数的运行时间以获得平均值。作业有几个部分必须完成。

我有工作代码,但我希望能够使用某个函数作为参数来调用计时函数...然后让它运行该函数一定的重复次数,然后返回结果。

(这不是作业的要求。我只是想超越要求,尽可能做一些有趣和独特的事情。)

如果能够以如下方式调用函数就好了:

timingRoutine(functionName);

timingRoutine(repetitions, functionName);

有什么建议或想法吗???这可能吗?

这是我的代码,它已经可以在作业中为 countLastName 函数计时。我并不为此感到特别自豪:

const int TIMING_REPETITIONS = 100000;
clock_t startTime = clock();
for(int i = 0; i < TIMING_REPETITIONS; i++) {
countLastName("Lastname", peopleArray, size);
}
clock_t endTime = clock();
double testResult = static_cast<double>(endTime - startTime) / CLOCKS_PER_SEC / TIMING_REPETITIONS;

最佳答案

你可以像这样安排一个通用函数:

 #include <functional>

double test(std::function<void()> f)
{
clock_t startTime = clock();
f();
clock_t endTime = clock();
return static_cast<double>(endTime - startTime) / CLOCKS_PER_SEC;
}

然后你可以传递一个函数给它:

void somefunction()
{
const int TIMING_REPETITIONS = 100000;
for(int i = 0; i < TIMING_REPETITIONS; i++) {
countLastName("Lastname", peopleArray, size);
}
}

int main(int argc, char *argv[])
{
std::cout << test(somefunction) << std::endl;
return 0;
}

或者一个 lambda

int main(int argc, char *argv[])
{
auto f = [=]()
{
const int TIMING_REPETITIONS = 100000;
for(int i = 0; i < TIMING_REPETITIONS; i++) {
countLastName("Lastname", peopleArray, size);
}
};

std::cout << test(f) << std::endl;

return 0;
}

关于c++ - 是否可以制作一个可以调用函数作为参数然后运行并计时的计时函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55589234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com