Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+;中记录运行时间的正确方法+;_C++_Logging_Elapsedtime - Fatal编程技术网

C++ 在C+;中记录运行时间的正确方法+;

C++ 在C+;中记录运行时间的正确方法+;,c++,logging,elapsedtime,C++,Logging,Elapsedtime,我正在写一篇关于集群环境中GPU加速的文章 要做到这一点,我在CUDA编程,基本上是一个C++扩展。 但是,由于我是一个C开发人员,我不知道C++的特殊性。 是否有一些关于记录运行时间的问题?一些建议或博客阅读 我最初的想法是做一个大循环并运行程序几次。50~100,并记录每次经过的时间,以在之后制作一些速度图形 我建议使用。它与平台无关,并且非常简单: #include <boost/timer/timer.hpp> boost::timer t; // do some stuff

我正在写一篇关于集群环境中GPU加速的文章
要做到这一点,我在CUDA编程,基本上是一个C++扩展。 但是,由于我是一个C开发人员,我不知道C++的特殊性。 是否有一些关于记录运行时间的问题?一些建议或博客阅读


我最初的想法是做一个大循环并运行程序几次。50~100,并记录每次经过的时间,以在之后制作一些速度图形

我建议使用。它与平台无关,并且非常简单:

#include <boost/timer/timer.hpp>
boost::timer t;
// do some stuff, up until when you want to start timing
t.restart();
// do the stuff you want to time.
std::cout << t.elapsed() << std::endl;
#包括
boost::定时器t;
//做一些事情,直到你想开始计时
t、 重启();
//做你想做的事情。

std::cout根据您的需要,它可以简单到:

time_t start = time(NULL);
// long running process
printf("time elapsed: %d\n", (time(NULL) - start));

我想您需要告诉您计划如何记录(文件或控制台)以及您需要的精度(秒、毫秒、us等)。“时间”以秒为单位。

标准函数,如
时间
通常分辨率很低。是的,解决这个问题的一个好方法是多次运行测试并取平均值。请注意,由于隐藏的启动成本,前几次可能会特别慢,特别是在使用GPU等复杂资源时

对于特定于平台的调用,请查看Windows上的
QueryPerformanceCounter
和OS X上的
CFAbsoluteTimeGetCurrent
(我没有使用POSIX调用
clock\u gettime
,但这可能值得一试。)

测量GPU的性能是很棘手的,因为GPU是运行单独指令的远程处理单元,通常在许多并行单元上运行。您可能希望访问Nvidia,获取各种资源和工具,以帮助测量和优化CUDA代码。(与项目相关的资源也具有高度相关性。)

最终,你想看看你的结果以多快的速度出现在屏幕上,对吗?因此,调用
time
就可以满足您的需要