⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timerutil.h

📁 gmeans-- Clustering with first variation and splitting 文本聚类算法Gmeans ,使用了3种相似度函数,cosine,euclidean ,K
💻 H
字号:
// Steven Farago// Drew Lamar//// Numerical Analysis -- Linear Algebra// Final Project////// Defines the TimerUtil class.  Used in the main code to determine the  // runtime of the parser.//#include <unistd.h>#include <iostream.h>#include <sys/types.h>#include <sys/time.h>#include <sys/resource.h>class TimerUtil { private:  timeval startTime;    timeval stopTime;  long sec;  long microsec;  timeval usrStartTime, sysStartTime; public:  // Note: constructor automatically sets start time  TimerUtil() {    setStartTime();  }  // Call this at the time you wish to start timing.  void setStartTime() {    sec = microsec = 0;    gettimeofday(&startTime, NULL);    struct rusage r_usage;    getrusage(RUSAGE_SELF, &r_usage);    usrStartTime.tv_sec = r_usage.ru_utime.tv_sec;    usrStartTime.tv_usec = r_usage.ru_utime.tv_usec;    sysStartTime.tv_sec = r_usage.ru_stime.tv_sec;    sysStartTime.tv_usec = r_usage.ru_stime.tv_usec;  }    // Call this at the time you wish to end timing.  void setStopTime() {    gettimeofday(&stopTime, NULL);        sec = stopTime.tv_sec - startTime.tv_sec;    microsec = stopTime.tv_usec - startTime.tv_usec;        if (microsec < 0) {      microsec+=1000000;      sec--;    }  }      void setStopTime(ostream& os, const char* notes) {    struct rusage r_usage;    getrusage(RUSAGE_SELF, &r_usage);        long usec = r_usage.ru_utime.tv_sec - usrStartTime.tv_sec;    long umsec = r_usage.ru_utime.tv_usec - usrStartTime.tv_usec;    if (umsec < 0) {      umsec += 1000000;      usec--;    }    long ssec = r_usage.ru_stime.tv_sec - sysStartTime.tv_sec;    long smsec = r_usage.ru_stime.tv_usec - sysStartTime.tv_usec;    if (smsec < 0) {      smsec += 1000000;      ssec--;    }    setStopTime();    os << notes << endl;    os << "CPU Usage: user = " << usec       << " seconds " << umsec << " us, system = " << ssec        << " seconds " << smsec << "us" << endl;    os << "ELAPSED Time: " << sec << " seconds "       << microsec << " us" << endl;  }void setStopTime(ostream& os, const char* notes, const int iter) {    struct rusage r_usage;    getrusage(RUSAGE_SELF, &r_usage);        long usec = r_usage.ru_utime.tv_sec - usrStartTime.tv_sec;    long umsec = r_usage.ru_utime.tv_usec - usrStartTime.tv_usec;    if (umsec < 0) {      umsec += 1000000;      usec--;    }    long ssec = r_usage.ru_stime.tv_sec - sysStartTime.tv_sec;    long smsec = r_usage.ru_stime.tv_usec - sysStartTime.tv_usec;    if (smsec < 0) {      smsec += 1000000;      ssec--;    }    setStopTime();    os << notes << endl;    os << "CPU Usage: user = " << usec       << " seconds " << umsec << " us, system = " << ssec        << " seconds " << smsec << "us" << endl;    os << "Time per iteration = "<<(usec+umsec/1e6)/iter<<endl;    os << "ELAPSED Time: " << sec << " seconds "       << microsec << " us" << endl;  }  void getTotalElapsedSec(ostream & os){    struct rusage r_usage;    getrusage(RUSAGE_SELF, &r_usage);    os << "CPU Usage: user = " << r_usage.ru_utime.tv_sec       << " seconds " << r_usage.ru_utime.tv_usec << " us, system = " << r_usage.ru_stime.tv_sec       << " seconds " << r_usage.ru_stime.tv_usec << "us" << endl;  }  // Returns the seconds between calls to setStartTime and setEndTime  long getElapsedSec() {return sec;}    // Returns any extra microseconds after taking to account elapsed   // seconds  long getElapsedMicrosec() {return microsec;}   };

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -