转自:http://www.zhangzscn.com/index.php/pro_pcl-get_code_runing_time/
有时需要计算代码运行的时间,使用PCL里的StopWatch类以及ScopeTime类可以实现这个功能。具体用法如下:
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
|
#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
<<
""
;
}
//得到时间
std
::
cout
<<
"代码1"
<<
std
::
endl
;
std
::
cout
<<
"运行时间:"
<<
time
.
getTime
(
)
<<
"毫秒"
<<
std
::
endl
;
std
::
cout
<<
"运行时间:"
<<
time
.
getTimeSeconds
(
)
<<
"秒"
<<
std
::
endl
;
//重置
time
.
reset
(
)
;
//代码2
for
(
size
_t
i
=
0
;
i
<
loopNum
*
10
;
++
i
)
{
std
::
cout
<<
""
;
}
//得到时间
std
::
cout
<<
"代码2"
<<
std
::
endl
;
std
::
cout
<<
"运行时间:"
<<
time
.
getTime
(
)
<<
"毫秒"
<<
std
::
endl
;
std
::
cout
<<
"运行时间:"
<<
time
.
getTimeSeconds
(
)
<<
"秒"
<<
std
::
endl
;
{
std
::
cout
<<
"代码3"
<<
std
::
endl
;
pcl
::
ScopeTime
scope_time
(
"运行时间:"
)
;
//代码3
for
(
size
_t
i
=
0
;
i
<
loopNum
;
++
i
)
{
std
::
cout
<<
""
;
}
}
return
(
0
)
;
}
|
输出结果为:
代码1
运行时间:57微妙
运行时间:0.058毫秒
代码2
运行时间:539微妙
运行时间:0.54毫秒
代码3
运行时间: took 54ms.
上面这段代码上,分别使用了StopWatch类以及ScopeTime类来计算代码运行时间。这里对ScopeTime类进行详细讲解,从代码里可以看到其并没有使用像StopWatch类直接调用getTime或getTimeSeconds,但是依然可以计算得到代码运行时间。这里解释一下原因,StopWatch类在计算的是类创建到析构的时间,定义类的新实例scope_time时开始计时,然后到scope_time开始析构时,输出代码运行时间。所以使用ScopeTime类时需要一个{}把代码和StopWatch包括起来。