轉(zhuǎn)自:http://www./2016/08/23/pclbianchengbaodian-jisuandaimayunxingshijian/ 有時(shí)需要計(jì)算代碼運(yùn)行的時(shí)間,使用PCL里的StopWatch類(lèi)以及ScopeTime類(lèi)可以實(shí)現(xiàn)這個(gè)功能。具體用法如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <iostream>
#include <pcl/common/time.h>
int main()
{
pcl::StopWatch time ;
//代碼1
int loopNum = 1000000;
for ( size_t i = 0; i < loopNum; ++i)
{
std::cout << "" ;
}
//得到時(shí)間
std::cout << "代碼1" << std::endl;
std::cout << "運(yùn)行時(shí)間:" << time .getTime() << "毫秒" << std::endl;
std::cout << "運(yùn)行時(shí)間:" << time .getTimeSeconds() << "秒" << std::endl;
//重置
time .reset();
//代碼2
for ( size_t i = 0; i < loopNum * 10; ++i)
{
std::cout << "" ;
}
//得到時(shí)間
std::cout << "代碼2" << std::endl;
std::cout << "運(yùn)行時(shí)間:" << time .getTime() << "毫秒" << std::endl;
std::cout << "運(yùn)行時(shí)間:" << time .getTimeSeconds() << "秒" << std::endl;
{
std::cout << "代碼3" << std::endl;
pcl::ScopeTime scope_time( "運(yùn)行時(shí)間:" );
//代碼3
for ( size_t i = 0; i < loopNum; ++i)
{
std::cout << "" ;
}
}
return (0);
}
|
輸出結(jié)果為:
代碼1
運(yùn)行時(shí)間:57微妙
運(yùn)行時(shí)間:0.058毫秒
代碼2
運(yùn)行時(shí)間:539微妙
運(yùn)行時(shí)間:0.54毫秒
代碼3
運(yùn)行時(shí)間: took 54ms.
上面這段代碼上,分別使用了StopWatch類(lèi)以及ScopeTime類(lèi)來(lái)計(jì)算代碼運(yùn)行時(shí)間。這里對(duì)ScopeTime類(lèi)進(jìn)行詳細(xì)講解,從代碼里可以看到其并沒(méi)有使用像StopWatch類(lèi)直接調(diào)用getTime或getTimeSeconds,但是依然可以計(jì)算得到代碼運(yùn)行時(shí)間。這里解釋一下原因,StopWatch類(lèi)在計(jì)算的是類(lèi)創(chuàng)建到析構(gòu)的時(shí)間,定義類(lèi)的新實(shí)例scope_time時(shí)開(kāi)始計(jì)時(shí),然后到scope_time開(kāi)始析構(gòu)時(shí),輸出代碼運(yùn)行時(shí)間。所以使用ScopeTime類(lèi)時(shí)需要一個(gè){}把代碼和StopWatch包括起來(lái)。
|