diff options
| author | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2017-02-19 18:35:04 -0800 | 
|---|---|---|
| committer | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2017-02-26 17:22:03 -0800 | 
| commit | 3b4e4003336c94527339a2a9ad7d52875974258f (patch) | |
| tree | 18e6e1125ff486ff3f9bd2985af7830cd7838f22 /src/common | |
| parent | 92c8bd4b1f650438274e50303a6d3f668924d071 (diff) | |
Remove built-in (non-Microprofile) profiler
Diffstat (limited to 'src/common')
| -rw-r--r-- | src/common/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/common/profiler.cpp | 101 | ||||
| -rw-r--r-- | src/common/profiler_reporting.h | 83 | 
3 files changed, 0 insertions, 186 deletions
| diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 592911c2b..aca0ebe38 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -12,7 +12,6 @@ set(SRCS              memory_util.cpp              microprofile.cpp              misc.cpp -            profiler.cpp              scm_rev.cpp              string_util.cpp              symbols.cpp @@ -45,7 +44,6 @@ set(HEADERS              microprofile.h              microprofileui.h              platform.h -            profiler_reporting.h              quaternion.h              scm_rev.h              scope_exit.h 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 diff --git a/src/common/profiler_reporting.h b/src/common/profiler_reporting.h deleted file mode 100644 index e9ce6d41c..000000000 --- a/src/common/profiler_reporting.h +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2015 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#pragma once - -#include <chrono> -#include <cstddef> -#include <vector> -#include "common/synchronized_wrapper.h" - -namespace Common { -namespace Profiling { - -using Clock = std::chrono::high_resolution_clock; -using Duration = Clock::duration; - -struct ProfilingFrameResult { -    /// Time since the last delivered frame -    Duration interframe_time; - -    /// Time spent processing a frame, excluding VSync -    Duration frame_time; -}; - -class ProfilingManager final { -public: -    ProfilingManager(); - -    /// This should be called after swapping screen buffers. -    void BeginFrame(); -    /// This should be called before swapping screen buffers. -    void FinishFrame(); - -    /// Get the timing results from the previous frame. This is updated when you call FinishFrame(). -    const ProfilingFrameResult& GetPreviousFrameResults() const { -        return results; -    } - -private: -    Clock::time_point last_frame_end; -    Clock::time_point this_frame_start; - -    ProfilingFrameResult results; -}; - -struct AggregatedDuration { -    Duration avg, min, max; -}; - -struct AggregatedFrameResult { -    /// Time since the last delivered frame -    AggregatedDuration interframe_time; - -    /// Time spent processing a frame, excluding VSync -    AggregatedDuration frame_time; - -    float fps; -}; - -class TimingResultsAggregator final { -public: -    TimingResultsAggregator(size_t window_size); - -    void Clear(); - -    void AddFrame(const ProfilingFrameResult& frame_result); - -    AggregatedFrameResult GetAggregatedResults() const; - -    size_t max_window_size; -    size_t window_size; -    size_t cursor; - -    std::vector<Duration> interframe_times; -    std::vector<Duration> frame_times; -}; - -ProfilingManager& GetProfilingManager(); -SynchronizedRef<TimingResultsAggregator> GetTimingResultsAggregator(); - -} // namespace Profiling -} // namespace Common | 
