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

标签 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);
}

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

最佳答案

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

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

如果您真的想在代码中自己完成此操作,那么您正在执行一项相当困难的任务。我有第一手资料 - 我用 C++ 编写了一个比较基准测试库,用于即时性能测试。

如果您真的想走这条路,您可以研究英特尔处理器(主要延续到 AMD)或您使用的任何处理器的基准测试。然而,正如我所说,这个主题很大而且很深入,远远超出了 StackOverflow 答案的范围。

关于c++ - C/C++中如何获取函数的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36556537/

相关文章:

python - 如何对时间值列表进行排序?

c++ - 为什么数组比 vector 快得多?

c++ - VC++错误LNK2005已经定义在

c++ - 如何使用 lambda 来进行 std::invoke 惰性求值?

c++ - Asio async_wait 给出操作取消

c - 生成没有良好随机源的初始化 vector

linux - voyager linux cpu 和时间显示自定义

c++ - GNU/Linux : getting value of option 15 of DHCP without using `getnameinfo`

c++ - inotify 和 epoll 的区别

ruby - 如何比较 ruby 中的时间