gpt4 book ai didi

c - 标准 C 函数在第一次调用时速度较慢,如何正确解决这个问题?

转载 作者:行者123 更新时间:2023-12-02 07:59:36 25 4
gpt4 key购买 nike

我想进行计时测试以学习如何使用“time.h”进行基准测试。但我注意到第一个测试总是更长。

0 1 2 3 4 5 6 7 8 9 
time 0.000138
0 1 2 3 4 5 6 7 8 9
time 0.000008
0 1 2 3 4 5 6 7 8 9
time 0.000007

如果我想在同一个 main() 函数中进行多个测试,结果将不可靠。这是打印上面输出的愚蠢代码。

#include <stdio.h>
#include <time.h>

const int COUNT = 10;

void test() {
clock_t start = clock();
for(int i = 0; i < COUNT; i++) {
printf("%d ", i);
}
printf("\ntime %lf\n", (double)(clock() - start) / (double)CLOCKS_PER_SEC );

}

int main() {
test();
test();
test();
return 0;
}


我通过忽略第一个“测试”功能解决了这个问题。此外,编写第一个在测试之前打印一些整数的“printf”也可以。但我想这不是一个合适的解决方案。

最佳答案

CPU 有缓存。当代码和数据不在缓存中时,代码的运行时间会更长。

标准做法是在衡量性能时舍弃第一次运行(或前几次运行)的结果。它有时被称为“缓存预热”。

关于c - 标准 C 函数在第一次调用时速度较慢,如何正确解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59240431/

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