説明を見る。00001 #ifndef OSL_MILLISECONDS_H
00002 #define OSL_MILLISECONDS_H
00003
00004 #include <chrono>
00005 #include <stdexcept>
00006
00007 namespace osl
00008 {
00009 namespace misc
00010 {
00011 struct NoMoreTime : std::runtime_error
00012 {
00013 NoMoreTime() : std::runtime_error("time limit over")
00014 {
00015 }
00016 };
00017 typedef std::chrono::high_resolution_clock clock;
00018 typedef std::chrono::time_point<clock> time_point;
00019 typedef std::chrono::milliseconds milliseconds;
00020 using std::chrono::duration_cast;
00021 template <class Duration>
00022 inline double toSeconds(Duration duration) {
00023 return duration_cast<std::chrono::duration<double>>(duration).count();
00024 }
00025 template <class Duration>
00026 inline int msec(Duration duration) {
00027 return duration_cast<milliseconds>(duration).count();
00028 }
00029 inline double elapsedSeconds(time_point start) {
00030 return toSeconds(clock::now()-start);
00031 }
00032 }
00033 using misc::clock;
00034 using misc::time_point;
00035 using misc::milliseconds;
00036 using misc::elapsedSeconds;
00037 using misc::toSeconds;
00038 using misc::duration_cast;
00039 using misc::msec;
00040 }
00041
00042
00043 #endif // OSL_MILLISECONDS_H
00044
00045
00046
00047