标准C函数在第一次调用时速度较慢,如何正确解决呢?

问题描述 投票:1回答:1

我想进行计时测试以学习如何使用“ 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”,该“ printf”也将在测试有效之前打印一些整数。但是我想这不是一个适当的解决方案。

c time
1个回答
0
投票

CPU具有缓存。当代码和数据不在缓存中时,代码需要更长的时间才能运行。

衡量性能时,通常会丢弃首次运行(或前几次运行)的结果的标准做法。有时称为“缓存预热”。

© www.soinside.com 2019 - 2024. All rights reserved.