如何在C/C++中获取函数的执行时间

-1 c c++ time

我有一个函数可以生成10000个随机数并将它们写在一个文件中.

void generator(char filename[])              
{
    int i;
    int n;
    FILE* fp;
    if((fp=fopen(filename,"w+"))==NULL)
    {
        printf("Fail creating file?");
    }
    srand((unsigned)time(NULL));
    for(i=0;i<10000;i++)
    {
        n=rand()%10000;
        fprintf(fp,"%d ",n);
    }
    fclose(fp);
}
Run Code Online (Sandbox Code Playgroud)

如何使用C/C++获取此函数的执行时间?

Cod*_*e92 6

代码分析不是一项特别容易的任务(或者,正如我们常说的那样,它是"非平凡的".)问题是因为以秒为单位测量的"执行时间"并不是特别准确或有用.

您要做的是测量CPU周期数.这可以使用外部工具完成,例如callgrind(Valgrind的工具之一).有99%的可能性就是你想要的.

如果你真的想在代码中自己做,那你就要完成一项相当困难的任务.我亲自了解 - 我用C++编写了一个比较基准测试库,用于实时性能测试.

如果您真的想走这条路,您可以研究基于英特尔处理器(主要是转移到AMD)或您使用的任何处理器的基准测试.但是,正如我所说,该主题是大而深入的,远远超出了StackOverflow答案的范围.