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;};