C++代码运行效率计时器--精度达到ms级以下
来源:互联网 发布:java数据库连接代码 编辑:程序博客网 时间:2024/05/29 09:22
//较之前一个版本精度提高了。#pragma once//运行效率计时器#include <fstream>#include <atlstr.h>class CClock{public: CClock():m_nStart(0),m_nEnd(0),m_nCounter(0){}; ~CClock() { if (m_sFile.is_open()) m_sFile.close(); }; void Open(LPCSTR strFileName) { if (m_sFile.is_open()) m_sFile.close(); m_sFile.open(strFileName); } void Close() { m_sFile.close(); } float Clock(LPCSTR strInfo = _T("")) { m_nEnd = Time()*1000.f; //转化为ms if( lstrcmp(strInfo,"") != 0 ) { CString str; str.Format("Step=%d:%s 用时:%.3f ms",m_nCounter++,strInfo,m_nEnd - m_nStart); m_sFile << str << std::endl; } m_nStart = m_nEnd; return m_nEnd; } float Time() { static __int64 start = 0; static __int64 frequency = 0; if (start==0) { QueryPerformanceCounter((LARGE_INTEGER*)&start); QueryPerformanceFrequency((LARGE_INTEGER*)&frequency); return 0.0f; } __int64 counter = 0; QueryPerformanceCounter((LARGE_INTEGER*)&counter); return (float) ((counter - start) / double(frequency)); }protected: std::ofstream m_sFile; float m_nStart,m_nEnd; LONG m_nCounter;};