00001 #ifndef moses_Time_H
00002 #define moses_Time_H
00003
00004 #include <ctime>
00005 #include <iostream>
00006 #include <iomanip>
00007 #include "Util.h"
00008
00009 namespace Moses
00010 {
00011
00012
00013
00015 void ResetUserTime();
00016
00018 void PrintUserTime(const std::string &message);
00019
00024 double GetUserTime();
00025
00026
00032 class Timer
00033 {
00034 friend std::ostream& operator<<(std::ostream& os, Timer& t);
00035
00036 private:
00037 bool running;
00038 bool stopped;
00039 double start_time;
00040 double stop_time;
00041
00042 public:
00043
00044
00045
00046
00047 Timer() : running(false),stopped(false) {
00048 start_time = 0;
00049 }
00050
00051 void start(const char* msg = 0);
00052 void stop(const char* msg = 0);
00053 void check(const char* msg = 0);
00054 double get_elapsed_time() const;
00055 };
00056
00057 }
00058
00059 #endif