C++ Boost库:简介和第一个示例程序
C++ Boost库:数值转换 lexical_cast
C++ Boost库:字符串格式化 format
C++ Boost库:字符串string_algo
C++ Boost库:字符串算法string_algo
C++ Boost库:类型推导BOOST_AUTO/BOOST_TYPEOF
C++ Boost库:分词处理库 tokenizer
C++ Boost库:windows下编译Boost库
C++ Boost库:日期时间库 date_time
C++ Boost库:智能指针scoped_ptr
C++ Boost库:数组智能指针 scoped_array
C++ Boost库:共享所有权的智能指针 shared_ptr
C++ Boost库:工厂函数 make_shared
C++ Boost库:共享有权的数组智能指针shared_array
C++ Boost库:弱引用智能指针 weak_ptr
C++ Boost库:禁止拷贝 nocopyable
C++ Boost库:计时器 timer
C++ Boost库:普通数组array
C++ Boost库:散列容器 unordered_set、unordered_multiset
C++ Boost库:散列容器 unordered_map、unordered_multimap
C++ Boost库:双向映射容器 bimap
C++ Boost库:环形缓冲区 circular_buffer
C++ Boost库:动态多维数组 multi_array
C++ Boost库:使用property_tree解析XML和JSON
C++ Boost库:简化循环 BOOST_FOREACH
C++ Boost库:随机数库 Random
C++ Boost库:引用库 ref
C++ Boost库:绑定库 bind
C++ Boost库:线程库 thread 跨平台多线程
C++ Boost库:互斥量 mutex
1. timer类
timer
是一个很小的库,提供简单的时间度量和进度显示功能,也可用于性能测试等计时任务。timer
库包含三个组件:计时器类timer
、progress_timer
和进度指示类progress_display
。
timer
类可以测量时间的流逝;是一个小型的计时器,提供毫秒级别的计时精度和操作函数,它最大可表示的时间间隔约为596小时,它位于boost
命名空间下。使用时需要包含头文件:
#include<boost/timer.hpp>
示例代码:
#include<iostream>
using namespace std;
#include<boost/timer.hpp>
#include<boost/progress.hpp>
using namespace boost;
#include<Windows.h>
int main()
{
timer t;
//cout << "最大精度:" << t.elapsed_max() / 3600 <<"小时"<< endl;
//cout << "最小精度:" << t.elapsed_min() << endl;//毫秒
Sleep(1234);//睡眠1234毫秒
double elapsed = t.elapsed();
//从对象定义到此刻的时间
cout << "流逝的时间:" << elapsed << endl;
cout << "------------------------------" << endl;
{
progress_timer pt; //继承至timer
//progress_timer pt2(pt); //noncopyable
Sleep(2345);//睡眠2345毫秒
}//析构时,自动打印消耗时间
return 0;
}
2. cpu_timer类
原始版本的 timer
已经废弃,新版本建议使用 cpu_timer
。cpu_timer
计量程序经过时间,用户执行时间,和系统执行时间。
使用时需要包含头文件:
#include<boost/timer/timer.hpp>
using namespace boost::timer;
链接的库:
#pragma comment(lib, "libboost_timer-vc100-mt-gd-x32-1_67.lib")
cpu_timer
类和 auto_cpu_timer
类用于精确计时,在elapsed
方法中,返回的不再是个数字,而是一个 struct cpu_times
结构体
format方法格式化输出结果;默认的格式定义为:
"%ws wall,%us user + %ss system = %ts CPU (%p%)\n"
含义为:
%w
:times.wall%u
:times.user%s
:times.system%t
:times.user + times.system%p
:The percentage of times.wall represented by times.user + times.system
使用示例:
#include<iostream>
using namespace std;
#include<boost/timer/timer.hpp>
using namespace boost::timer;
using namespace boost;
#include<Windows.h>
int main()
{
cpu_timer t; //自动start
Sleep(1234);//睡眠
t.stop();
//for (size_t i = 0; i < 10000000; i++)
//{
// int a = 100 * i;
//}
//默认1.234136s wall, 0.000000s user + 0.000000s system = 0.000000s CPU (n/a%)
//string str = t.format();
string str = t.format(6 ,"消耗时间 %w 秒");
cout << str << endl;
cout << "-------------auto_cpu_timer -----------" << endl;
{
auto_cpu_timer t2(5, "消耗时间 %w 秒");
Sleep(3456);
}//t2析构时自动打印消耗的时间
getchar();
return 0;
}
运行结果: