Skip to content

Instantly share code, notes, and snippets.

@Fuyutsubaki
Created December 27, 2013 06:44
Show Gist options
  • Save Fuyutsubaki/8143471 to your computer and use it in GitHub Desktop.
Save Fuyutsubaki/8143471 to your computer and use it in GitHub Desktop.
デバックタイマー。呼び出された回数と時間を教えてくれる
#pragma once
#include<chrono>
#include<string>
#include<list>
class DebugTimer
{
struct Data
{
Data(const std::string&id)
:id(id)
{
Get_List().push_back(this);
}
std::chrono::system_clock::duration time;
int count = 0;
std::string id;
};
public:
template<class ID_class>
class Timer
{
public:
Timer()
:begin(std::chrono::system_clock::now())
{}
~Timer()
{
get().time += std::chrono::system_clock::now() - begin;
++get().count;
}
private:
const std::chrono::system_clock::time_point begin;
inline static Data &get(){ static Data c(typeid(ID_class).name()); return c; }
};
//何もしないタイマー。release時にでも
template<class>
class No_Debug_Timer{};
inline static std::list<Data*> &Get_List(){ static std::list<Data*> list; return list; }
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment