summaryrefslogtreecommitdiffstats
path: root/src/core/perf_stats.h
diff options
context:
space:
mode:
authorfearlessTobi <thm.frey@gmail.com>2019-08-26 17:29:08 +0200
committerFearlessTobi <thm.frey@gmail.com>2019-09-10 12:44:19 +0200
commit684b616f0d6445b753dded31554e0b006b6d2c3e (patch)
tree6caaae05a26149df5919a3876c1b0b4b4789614d /src/core/perf_stats.h
parentMerge pull request #2847 from VelocityRa/nro-nacp-fix (diff)
downloadyuzu-684b616f0d6445b753dded31554e0b006b6d2c3e.tar
yuzu-684b616f0d6445b753dded31554e0b006b6d2c3e.tar.gz
yuzu-684b616f0d6445b753dded31554e0b006b6d2c3e.tar.bz2
yuzu-684b616f0d6445b753dded31554e0b006b6d2c3e.tar.lz
yuzu-684b616f0d6445b753dded31554e0b006b6d2c3e.tar.xz
yuzu-684b616f0d6445b753dded31554e0b006b6d2c3e.tar.zst
yuzu-684b616f0d6445b753dded31554e0b006b6d2c3e.zip
Diffstat (limited to '')
-rw-r--r--src/core/perf_stats.h20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/core/perf_stats.h b/src/core/perf_stats.h
index 222ac1a63..2db290c09 100644
--- a/src/core/perf_stats.h
+++ b/src/core/perf_stats.h
@@ -4,6 +4,7 @@
#pragma once
+#include <array>
#include <chrono>
#include <mutex>
#include "common/common_types.h"
@@ -27,6 +28,10 @@ struct PerfStatsResults {
*/
class PerfStats {
public:
+ explicit PerfStats(u64 title_id);
+
+ ~PerfStats();
+
using Clock = std::chrono::high_resolution_clock;
void BeginSystemFrame();
@@ -36,13 +41,26 @@ public:
PerfStatsResults GetAndResetStats(std::chrono::microseconds current_system_time_us);
/**
+ * Returns the Arthimetic Mean of all frametime values stored in the performance history.
+ */
+ double GetMeanFrametime();
+
+ /**
* Gets the ratio between walltime and the emulated time of the previous system frame. This is
* useful for scaling inputs or outputs moving between the two time domains.
*/
double GetLastFrameTimeScale();
private:
- std::mutex object_mutex;
+ std::mutex object_mutex{};
+
+ /// Title ID for the game that is running. 0 if there is no game running yet
+ u64 title_id{0};
+ /// Current index for writing to the perf_history array
+ std::size_t current_index{0};
+ /// Stores an hour of historical frametime data useful for processing and tracking performance
+ /// regressions with code changes.
+ std::array<double, 216000> perf_history = {};
/// Point when the cumulative counters were reset
Clock::time_point reset_point = Clock::now();