在C+中查找程序的运行时间+; 我有以下C++代码(为了简化,我简化了它) intmain() { 字符串runCommand=“./runanothercpprogram.out”; 对于(int i=0;i

在C+中查找程序的运行时间+; 我有以下C++代码(为了简化,我简化了它) intmain() { 字符串runCommand=“./runanothercpprogram.out”; 对于(int i=0;i,c++,performance,C++,Performance,请仔细阅读clock()的文档,它只报告调用它的进程的时间。使用system()可以启动一个shell(并从中启动另一个程序),该shell在不同的进程中运行 顺便说一句:在web上搜索“timing C++”或类似的东西,它应该会显示足够的结果,例如time()或Boost.Chrono。仔细阅读clock()的文档,它只报告调用它的进程的时间。使用system()可以启动一个shell(然后是另一个程序)在不同的进程中运行 顺便说一句:在网络上搜索“timing C++”或类似的东西,它应该

请仔细阅读
clock()
的文档,它只报告调用它的进程的时间。使用
system()
可以启动一个shell(并从中启动另一个程序),该shell在不同的进程中运行


顺便说一句:在web上搜索“timing C++”或类似的东西,它应该会显示足够的结果,例如
time()
或Boost.Chrono。

仔细阅读
clock()
的文档,它只报告调用它的进程的时间。使用
system()
可以启动一个shell(然后是另一个程序)在不同的进程中运行

顺便说一句:在网络上搜索“timing C++”或类似的东西,它应该会显示足够的结果,例如来自的
time()
或Boost.Chrono.

你考虑过使用gettimeofday吗

struct timeval tv;
struct timeval start_tv;

gettimeofday(&start_tv, NULL);

system(something);

double elapsed = 0.0;

gettimeofday(&tv, NULL);
elapsed = (tv.tv_sec - start_tv.tv_sec) +
(tv.tv_usec - start_tv.tv_usec) / 1000000.0;

你考虑过使用gettimeofday吗

struct timeval tv;
struct timeval start_tv;

gettimeofday(&start_tv, NULL);

system(something);

double elapsed = 0.0;

gettimeofday(&tv, NULL);
elapsed = (tv.tv_sec - start_tv.tv_sec) +
(tv.tv_usec - start_tv.tv_usec) / 1000000.0;

如果您有权访问C++11

#包括

auto start=std::chrono::staid_clock::now();
//在这里做点什么
自动停止=标准::时钟::稳定时钟::现在();
自动持续时间=std::chrono::持续时间_cast(停止-开始).count();

如果您可以访问C++11

#包括

auto start=std::chrono::staid_clock::now();
//在这里做点什么
自动停止=标准::时钟::稳定时钟::现在();
自动持续时间=std::chrono::持续时间_cast(停止-开始).count();

std::cout如果您在linux/cygwin/msys上,请使用
另一个程序
在shell和cross上获取此文件verify@tejashs是的,我已经做了你的建议。另一个程序的结果显示为1m123.215s,但来自cout的输出打印0.000267例如,一般来说,如果你@toshibanexus78可以标记answe,那就太好了回答你的问题(接受为答案)这样,其他有相同问题的用户就不必通读所有回复和链接。如果您在linux/cygwin/msys上,请使用另一个程序
time
在shell和cross上获取此信息verify@tejashs是的,我已经做了你的建议。另一个程序的结果显示为1m123.215s,但是来自cout的输出为e打印了0.000267例如,一般来说,如果@toshibanexus78能够将您的问题的答案标记为答案(接受为答案),那就太好了这样其他有相同问题的用户就不必阅读所有的回复和链接。@Ulrich_Eckhardt谢谢你提供的信息,我知道了,你有什么解决方案吗?我如何在另一个程序中了解程序的运行时间。根据查找解决方案的建议添加。@Ulrich_Eckhardt谢谢你提供的信息,我明白了你知道吗,你有什么解决方案吗?我如何在另一个程序中了解程序的运行时间。根据查找解决方案的建议添加。这段代码是否以秒为单位给出运行时间?是的,结束时间和开始时间之间的差量以微秒为单位(10^-6->10^-6微秒为一秒)把这个差值除以1000000(10 ^ 6),你就会得到秒!这个答案能解决你的问题吗?如果是的话,请考虑把它标记为答案。这段代码是否把过去的时间作为秒?是的,结束时间和开始时间之间的差值是微秒(10 ^ 6 - 10秒6微秒)。把这个差值除以1000000(10 ^ 6),你就会得到秒。这个答案能解决你的问题吗?如果是这样,请考虑把它标记为答案。
struct timeval tv;
struct timeval start_tv;

gettimeofday(&start_tv, NULL);

system(something);

double elapsed = 0.0;

gettimeofday(&tv, NULL);
elapsed = (tv.tv_sec - start_tv.tv_sec) +
(tv.tv_usec - start_tv.tv_usec) / 1000000.0;
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;