一、pcl::StopWatch
使用PCL里的StopWatch类计算代码运行时间的代码如下:
#include <iostream> #include <pcl/common/time.h> using namespace std; int main() { pcl::StopWatch time; //代码1 int loopNum = 1000000; for (size_t i = 0; i < loopNum; ++i) { cout << ""; } //得到时间 cout << "代码1" << endl; cout << "运行时间:" << time.getTime() << "毫秒" << endl; cout << "运行时间:" << time.getTimeSeconds() << "秒" << endl; //重置 time.reset(); //代码2 for (size_t i = 0; i < loopNum * 10; ++i) { std::cout << ""; } //得到时间 cout << "代码2" << endl; cout << "运行时间:" << time.getTime() << "毫秒" << endl; cout << "运行时间:" << time.getTimeSeconds() << "秒" << endl; return (0); }
二、pcl::ScopeTime
ScopeTime类用来度量在作用域中花费的时间。计算的是类创建到析构的时间,定义类的新实例scope_time时开始计时,然后到scope_time开始析构时,输出代码运行时间。所以使用ScopeTime类时需要一个{}把代码和StopWatch包括起来。
#include <iostream> #include <pcl/common/time.h> using namespace std; int main() { pcl::StopWatch time; int loopNum = 1000000; { cout << "代码1" << endl; pcl::ScopeTime scope_time("运行时间:"); //代码1 for (size_t i = 0; i < loopNum; ++i) { cout << ""; } } return (0); }
三、pcl::console::TicToc
console 方法是作为计算器的起始方法。该方法一般用于测试程序执行的时长,并将执行时长显示在控制台。如果一个页面有多个地方需要使用到计算器,可以添加标签参数来设置。提示: 在测试该方法的过程中,控制台需要可见 。
#include <iostream> #include <pcl/console/time.h> using namespace std; int main(int argc, char** argv) { pcl::console::TicToc time; time.tic(); for (size_t i = 0; i < 10; ++i) { cout << "i=" << i << endl; } cout << "算法运行时间:" << time.toc() << " ms" << endl; return (0); }
四、ctime
c++标准库并没有提供所谓的日期类型,而是继承了c的日期类型里面有些常用的函数,比如计时函数clock()。c++中对clock()的定义为:clock_t clock(void);clock为无参函数,返回clock_t型数据;它用于计算从程序启动到调用该函数所占用cpu的时间,若时间不可取,返回-1;默认计算时间为毫秒(ms)。
#include<iostream> #include<ctime> //PCL中可以不包含该头文件 using namespace std; int main() { clock_t start1 = clock(); //计时开始 for (int i = 0; i < 100000000;) { ++i; } clock_t end1 = clock(); //计时结束 clock_t start2 = clock(); //计时开始 for (int i = 0; i < 200000000; i++) { ++i; } clock_t end2 = clock(); //计时结束 cout << "第一个for循环运行时间:" << end1 - start1 << "毫秒\n"; cout << "第一个for循环运行时间:" << (double)(end1 - start1) / CLOCKS_PER_SEC << "秒\n"; cout << "第二个for循环运行时间:" << end2 - start2 << "ms\n"; cout << "整个程序运行时间:" << clock() << "ms\n"; return 0; }
五、std::chrono
std::chrono是C++11引入的日期时间处理库,用于计算运行时间的使用代码如下:
#include <iostream> #include <chrono> // 计时用的 using namespace std; int main(int argc, char** argv) { auto startTime = std::chrono::steady_clock::now(); for (size_t i = 0; i < 10; ++i) { cout << "i=" << i << endl; } auto endTime = std::chrono::steady_clock::now(); auto ellapsedTime = std::chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime); cout << "运行时间为: " << ellapsedTime.count() << " 毫秒." << std::endl; return 0; }