This question already has answers here:
How can I benchmark C code easily?
                                
                                    (4个答案)
                                
                        
                                3年前关闭。
            
                    
我有一个可以生成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);
}


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

最佳答案

代码概要分析不是特别容易的任务(或者,正如我们在编程中经常说的那样,它“微不足道”。)问题是因为以秒为单位的“执行时间”并不是特别准确或有用。

您要做的是测量CPU周期数。可以使用外部工具,例如callgrind(Valgrind的工具之一)来完成此操作。您想要的就是99%的机会。

如果您真的想用代码自己做,那您就在完成一项相当困难的任务。我知道第一手资料-我用C ++编写了一个比较基准测试库,用于动态性能测试。

如果您真的想走这条路,可以研究基于Intel处理器(主要延续到AMD)或您使用的任何处理器的基准测试。但是,正如我所说的那样,该主题是广泛而深入的,远远超出了StackOverflow答案的范围。

10-08 19:52