28 MetricData(
const wxString &n,
const wxColour &c,
const wxString &u =
"",
size_t max_s = 120);
47 void RecordMetric(
const std::string &name,
float value,
const std::string &unit =
"");
48 void RecordTime(
const std::string &name,
double milliseconds);
57 std::shared_ptr<MetricData>
GetMetric(
const std::string &name)
const;
58 std::vector<std::shared_ptr<MetricData>>
GetAllMetrics()
const;
99 unsigned long long m_lastCpuTotal;
100 unsigned long long m_lastCpuIdle;
114 wxString
GetTitle()
const override {
return "Performance"; }
115 wxString
GetTabType()
const override {
return "Performance"; }
140 void OnPaint(wxPaintEvent &event);
141 void OnSize(wxSizeEvent &event);
150 void DrawChart(wxDC &dc,
const wxRect &rect, std::shared_ptr<MetricData> metric);
151 void DrawMetricInfo(wxDC &dc,
const wxRect &rect, std::shared_ptr<MetricData> metric);
152 void DrawGrid(wxDC &dc,
const wxRect &rect,
float minVal,
float maxVal);
157 wxString
FormatValue(
float value,
const wxString &unit)
const;
209#define PERF_BEGIN_FRAME() EmberForge::PerformanceMonitor::GetInstance().BeginFrame()
210#define PERF_END_FRAME() EmberForge::PerformanceMonitor::GetInstance().EndFrame()
211#define PERF_RECORD(name, value, unit) EmberForge::PerformanceMonitor::GetInstance().RecordMetric(name, value, unit)
212#define PERF_TIME_BEGIN(name) auto _perf_start_##name = std::chrono::high_resolution_clock::now()
213#define PERF_TIME_END(name) \
214 EmberForge::PerformanceMonitor::GetInstance().RecordTime( \
216 std::chrono::duration<double, std::milli>(std::chrono::high_resolution_clock::now() - _perf_start_##name) \
Interface for tab-based UI components in the application.
MetricData(const wxString &n, const wxColour &c, const wxString &u="", size_t max_s=120)
void AddValue(float value)
std::deque< float > values