diff options
author | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2017-02-19 23:34:47 +0100 |
---|---|---|
committer | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2017-02-27 02:22:03 +0100 |
commit | c75ae6c585f651a1b7c162c2e1ecccd22a1c587d (patch) | |
tree | 30d51f39c6b57244e1ede29820c3f5d98ca38451 /src/core/perf_stats.h | |
parent | SynchronizedWrapper: Add Lock convenience method (diff) | |
download | yuzu-c75ae6c585f651a1b7c162c2e1ecccd22a1c587d.tar yuzu-c75ae6c585f651a1b7c162c2e1ecccd22a1c587d.tar.gz yuzu-c75ae6c585f651a1b7c162c2e1ecccd22a1c587d.tar.bz2 yuzu-c75ae6c585f651a1b7c162c2e1ecccd22a1c587d.tar.lz yuzu-c75ae6c585f651a1b7c162c2e1ecccd22a1c587d.tar.xz yuzu-c75ae6c585f651a1b7c162c2e1ecccd22a1c587d.tar.zst yuzu-c75ae6c585f651a1b7c162c2e1ecccd22a1c587d.zip |
Diffstat (limited to 'src/core/perf_stats.h')
-rw-r--r-- | src/core/perf_stats.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/core/perf_stats.h b/src/core/perf_stats.h new file mode 100644 index 000000000..566a1419a --- /dev/null +++ b/src/core/perf_stats.h @@ -0,0 +1,43 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include <chrono> +#include "common/common_types.h" + +namespace Core { + +class PerfStats { +public: + using Clock = std::chrono::high_resolution_clock; + + struct Results { + /// System FPS (LCD VBlanks) in Hz + double system_fps; + /// Game FPS (GSP frame submissions) in Hz + double game_fps; + /// Walltime per system frame, in seconds, excluding any waits + double frametime; + /// Ratio of walltime / emulated time elapsed + double emulation_speed; + }; + + void BeginSystemFrame(); + void EndSystemFrame(); + void EndGameFrame(); + + Results GetAndResetStats(u64 current_system_time_us); + +private: + Clock::time_point reset_point = Clock::now(); + + Clock::time_point frame_begin; + Clock::duration accumulated_frametime = Clock::duration::zero(); + u64 reset_point_system_us = 0; + u32 system_frames = 0; + u32 game_frames = 0; +}; + +} // namespace Core |