找出C ++函数运行所需的时间

这个问题在这里已经有了答案:

  • 我如何分析在Linux中运行的C ++代码? 10个答案
  • 在C ++ 4答案中测量函数的执行时间

  • 还有另一种方法来查找问题,而不是通过分解功能时间。

    在调试器下运行它,并手动中断它几次,每次检查调用堆栈。 如果您查看代码中的每个级别的调用堆栈,您都可以清楚地知道为什么这个时刻正在花费时间。

    假设你有一个速度问题,修复后会节省一些时间,比如30%。 这意味着您检查的每个堆栈样本在问题期间至少有30%的机会发生。 所以,如果你看到它做了一些可以消除的事情,并且你看到它不止一个样本,你就发现了你的问题! (或者至少有一个)**

    这是随机暂停技术。 它会发现定时器会遇到的任何问题,以及他们不会遇到的问题。

    **你可能需要考虑一下。 如果你看到它在单个样本上做某件事,那并不意味着太多。 即使代码只做了一千件完全不同的事情,但它们都没有花费大量时间,它不得不停止在某个地方。 但是,如果你看到它做了一些事情,并且你看到了一个以上的样本,并且你没有抽取很多样本,那么你两次碰到同样微不足道的事情的可能性非常小。 所以它的可能性很大。 事实上,对其概率的合理猜测是您看到它的样本数量除以样本总数。


    您可以创建自己的计时器类。 在每个块调用方法开始时,将定时器变量重置为零,并在代码块末尾获取定时器。 您可以在代码的各个块中执行此操作。 一旦确定了需要更多时间的代码块,您也可以使用内部计时器。如果您想要尝试使用标准工具,那么建议您使用gprof。 http://www.thegeekstuff.com/2012/08/gprof-tutorial/


    #include <iostream> 
    #include <ctime>
    
    int main() {
        std::clock_t start = std::clock();
    
        //code here
    
        double duration = ( std::clock() - start ) / (double) CLOCKS_PER_SEC;
        std::cout << duration << std::endl;
    }
    
    链接地址: http://www.djcxy.com/p/40357.html

    上一篇: Find time it takes for a C++ function to run

    下一篇: gprof produces empty output