summaryrefslogtreecommitdiffstats
path: root/src/common/profiler.cpp
diff options
context:
space:
mode:
authorYuri Kunde Schlesner <yuriks@yuriks.net>2017-02-20 03:35:04 +0100
committerYuri Kunde Schlesner <yuriks@yuriks.net>2017-02-27 02:22:03 +0100
commit3b4e4003336c94527339a2a9ad7d52875974258f (patch)
tree18e6e1125ff486ff3f9bd2985af7830cd7838f22 /src/common/profiler.cpp
parentPerfStats: Add method to get the instantaneous time ratio (diff)
downloadyuzu-3b4e4003336c94527339a2a9ad7d52875974258f.tar
yuzu-3b4e4003336c94527339a2a9ad7d52875974258f.tar.gz
yuzu-3b4e4003336c94527339a2a9ad7d52875974258f.tar.bz2
yuzu-3b4e4003336c94527339a2a9ad7d52875974258f.tar.lz
yuzu-3b4e4003336c94527339a2a9ad7d52875974258f.tar.xz
yuzu-3b4e4003336c94527339a2a9ad7d52875974258f.tar.zst
yuzu-3b4e4003336c94527339a2a9ad7d52875974258f.zip
Diffstat (limited to 'src/common/profiler.cpp')
-rw-r--r--src/common/profiler.cpp101
1 files changed, 0 insertions, 101 deletions
diff --git a/src/common/profiler.cpp b/src/common/profiler.cpp
deleted file mode 100644
index b40e7205d..000000000
--- a/src/common/profiler.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright 2015 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#include <algorithm>
-#include <cstddef>
-#include <vector>
-#include "common/assert.h"
-#include "common/profiler_reporting.h"
-#include "common/synchronized_wrapper.h"
-
-namespace Common {
-namespace Profiling {
-
-ProfilingManager::ProfilingManager()
- : last_frame_end(Clock::now()), this_frame_start(Clock::now()) {}
-
-void ProfilingManager::BeginFrame() {
- this_frame_start = Clock::now();
-}
-
-void ProfilingManager::FinishFrame() {
- Clock::time_point now = Clock::now();
-
- results.interframe_time = now - last_frame_end;
- results.frame_time = now - this_frame_start;
-
- last_frame_end = now;
-}
-
-TimingResultsAggregator::TimingResultsAggregator(size_t window_size)
- : max_window_size(window_size), window_size(0) {
- interframe_times.resize(window_size, Duration::zero());
- frame_times.resize(window_size, Duration::zero());
-}
-
-void TimingResultsAggregator::Clear() {
- window_size = cursor = 0;
-}
-
-void TimingResultsAggregator::AddFrame(const ProfilingFrameResult& frame_result) {
- interframe_times[cursor] = frame_result.interframe_time;
- frame_times[cursor] = frame_result.frame_time;
-
- ++cursor;
- if (cursor == max_window_size)
- cursor = 0;
- if (window_size < max_window_size)
- ++window_size;
-}
-
-static AggregatedDuration AggregateField(const std::vector<Duration>& v, size_t len) {
- AggregatedDuration result;
- result.avg = Duration::zero();
- result.min = result.max = (len == 0 ? Duration::zero() : v[0]);
-
- for (size_t i = 0; i < len; ++i) {
- Duration value = v[i];
- result.avg += value;
- result.min = std::min(result.min, value);
- result.max = std::max(result.max, value);
- }
- if (len != 0)
- result.avg /= len;
-
- return result;
-}
-
-static float tof(Common::Profiling::Duration dur) {
- using FloatMs = std::chrono::duration<float, std::chrono::milliseconds::period>;
- return std::chrono::duration_cast<FloatMs>(dur).count();
-}
-
-AggregatedFrameResult TimingResultsAggregator::GetAggregatedResults() const {
- AggregatedFrameResult result;
-
- result.interframe_time = AggregateField(interframe_times, window_size);
- result.frame_time = AggregateField(frame_times, window_size);
-
- if (result.interframe_time.avg != Duration::zero()) {
- result.fps = 1000.0f / tof(result.interframe_time.avg);
- } else {
- result.fps = 0.0f;
- }
-
- return result;
-}
-
-ProfilingManager& GetProfilingManager() {
- // Takes advantage of "magic" static initialization for race-free initialization.
- static ProfilingManager manager;
- return manager;
-}
-
-SynchronizedRef<TimingResultsAggregator> GetTimingResultsAggregator() {
- static SynchronizedWrapper<TimingResultsAggregator> aggregator(30);
- return SynchronizedRef<TimingResultsAggregator>(aggregator);
-}
-
-} // namespace Profiling
-} // namespace Common