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

Plo*_*oum 2 c time

我想进行计时测试以学习如何使用“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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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

ana*_*lyg 6

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

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