跟踪类
来源:互联网 发布:重庆大学数据图书馆 编辑:程序博客网 时间:2024/05/24 03:21
#ifndef _TRACE_H_#define _TRACE_H_#include <iostream>#include <string>using namespace std;/*设计一个跟踪类首先这个类只要有一个string的成员变量就可以了;其次它的构造函数含简单,默认就行;它会有两个成员函数enter()、leave()来表示进入和离开某个地方然后为这个类生产一个全局对象、这样只需要包含头文件,就可以直接使用了。。。。但是当我们离开一个作用域的时候确需要,频繁的书写leave()函数,而这肯定会不高效。因此我们设计类的构造函数为enter()函数,类的析构函数为leave()函数,这样只要作用域都会调用leave()函数。*/class trace{public: static bool is_open; trace(const char* s) :m_msg(s){ if (is_open) cout << "enter " << m_msg << endl; } ~trace(){ if (is_open) cout << "leave " << m_msg << endl; } void debug(const char* msg){ if (is_open) cout << "msg" << endl; }private: const char* m_msg;};bool trace::is_open = false;class Trace{public: Trace(const char* s) :m_msg(s){#ifdef _TRACE_DEBUG cout << "enter " << m_msg << endl;#endif _TRACE_DEBUG } ~Trace(){#ifdef _TRACE_DEBUG cout << "leave " << m_msg << endl;#endif _TRACE_DEBUG } void debug(const char* msg){#ifdef _TRACE_DEBUG cout << "msg" << endl;#endif _TRACE_DEBUG }private: string m_msg;};#endif //trace.h
#include <iostream>#include <ctime>#include <fstream>#include "trace.h"using namespace std;int add(int x){ trace t("add"); return x+1;}int Add(int x){ Trace t("add"); return x + 1;}// 保存cout流缓冲区指针 //streambuf* coutBuf = cout.rdbuf();//ofstream of("out.txt");// 获取文件out.txt流缓冲区指针 //streambuf* fileBuf = of.rdbuf();// 设置cout流缓冲区指针为out.txt的流缓冲区指针 //cout.rdbuf(fileBuf);//cout << "E-mail" << "Chen@qq.com" << endl;// 恢复cout原来的流缓冲区指针 //cout.rdbuf(coutBuf);//of.close();//cout << "Write Personal Information over..." << endl;int main(){ //trace::is_open = true; trace::is_open = false;#define _TRACE_DEBUG#undef _TRACE_DEBUG streambuf* coutBuf = cout.rdbuf(); ofstream of("out.txt"); streambuf* fileBuf = of.rdbuf(); cout.rdbuf(fileBuf); clock_t start_t2 = clock(); for (int i = 0; i < 10000; ++i){ int y = Add(i); } clock_t end_t2 = clock(); clock_t start_t = clock(); for (int i = 0; i < 10000; ++i){ int y = add(i); } clock_t end_t = clock(); cout.rdbuf(coutBuf); of.close(); cout << "time = " << (end_t - start_t) << endl; cout << "time2 = " << (end_t2 - start_t2) << endl; system("pause"); return 0;}//测试结果显示trace比Trace速度更快。
阅读全文
0 0
- 跟踪类
- 跟踪函数的跟踪类的设计
- 跟踪
- 跟踪
- 跟踪
- 跟踪
- 跟踪
- 跟踪
- OnPaint类中断点跟踪问题
- JVM跟踪类的加载
- 类实例跟踪统计管理器(源代码)
- 关于仿制的一个ACE跟踪类
- 写一个跟踪的类库
- C++函数用时及调用跟踪类
- Android VelocityTracker类 滑动速度跟踪
- TouchEvent事件中的 速度跟踪类----------------VelocityTracker----
- C++中-如何跟踪函数和类
- 滑动动速度跟踪类VelocityTracker介绍
- Android Studio3.0版本gradle配置
- Android端与web端以及数据库的建立它们之间的交互详解与案例分析
- Codeforces #443 (div 2)
- js随机点名系统
- python数据存储系列教程——python操作sqlite数据库:连接、增删查改、指令执行
- 跟踪类
- HDU 1087(动态规划-最大上升序列)
- JavaSE学习之路
- ISIS邻居路由器的类型对形成邻接类型的规则
- iTunes Connect-提交应用屏幕快照图片尺寸
- 面试要点
- Spring Boot使用Redis实现session共享
- freeimage ubuntu安装
- ios-git指令