c++ - 在 C++ 中查找程序的运行时间

标签 c++ performance

我有以下C++代码(为了简单起见,我对其进行了简化。)

int main()
{
     string runCommand="./runAnotherCppProgram.out";
     for (int i=0; i<5; i++)
     {
       system(runCommand.c_str());
     }
     return 0;
}

现在我想知道 runAnotherCppProgram.out 在每次迭代中花费了多少时间。为此,我做了以下事情:

int main()
{
     string runCommand = "./runAnotherCppProgram.out";
     for (int i=0; i<5; i++)
     {
       clock_t clockStart = clock();
       system(runCommand.c_str());
       double finish = (double)(clock() - clockStart)/CLOCKS_PER_SEC;
       cout << finish << endl;
     }
    return 0;
}

但是,它提供的实际执行时间要少得多。可能是什么问题?

最佳答案

如果您可以访问 C++11....

#include <chrono>

auto start = std::chrono::steady_clock::now();

//DO SOMETHING HERE

auto stop = std::chrono::steady_clock::now();

auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(stop-start).count();

std::cout << "Running time was: " << ((double)duration / 1000.0) << "s" << std::endl;

你可以玩弄你施放它的单位以及你想如何显示它......(也就是我做了毫秒然后除以 1000 得到带有一些小数点的秒,持续时间以整数形式出现所以它如果你只要求几秒钟,将会四舍五入)

关于c++ - 在 C++ 中查找程序的运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30354954/

相关文章:

c++ - 对以下异步行为感到困惑

c++ - STL priority_queue 的效率

java - 内存读取速度与简单算术和条件

java - 什么时候应该优先使用流而不是传统循环以获得最佳性能?流是否利用了分支预测?

c++ - 如何与策略设计模式交互

c++ - Windows 和 Linux 上 std::unordered_map 容器的不同行为

c++ - 有没有一种访问函数外信息的好方法?

sql-server - 为什么更新 View 会导致速度加快?

java - serverSocket.accept() 缓慢或无响应

mysql - 什么是最好的 query_cache_size/Ram 比率