PerformanceTracker: Add ownership of m_log_name.

This commit is contained in:
Sam Belliveau 2022-12-30 14:56:08 -05:00 committed by Admiral H. Curtiss
parent bc46089ab0
commit 588a72a4fc
No known key found for this signature in database
GPG Key ID: F051B4C4044F33FB
3 changed files with 11 additions and 8 deletions

View File

@ -34,7 +34,7 @@ public:
private: private:
PerformanceTracker m_fps_counter{"render_times.txt"}; PerformanceTracker m_fps_counter{"render_times.txt"};
PerformanceTracker m_vps_counter{"vblank_times.txt"}; PerformanceTracker m_vps_counter{"vblank_times.txt"};
PerformanceTracker m_speed_counter{nullptr, 500000}; PerformanceTracker m_speed_counter{std::nullopt, 500000};
}; };
extern PerformanceMetrics g_perf_metrics; extern PerformanceMetrics g_perf_metrics;

View File

@ -18,7 +18,7 @@
static constexpr double SAMPLE_RC_RATIO = 0.25; static constexpr double SAMPLE_RC_RATIO = 0.25;
PerformanceTracker::PerformanceTracker(const char* log_name, PerformanceTracker::PerformanceTracker(const std::optional<std::string> log_name,
const std::optional<s64> sample_window_us) const std::optional<s64> sample_window_us)
: m_on_state_changed_handle{Core::AddOnStateChangedCallback([this](Core::State state) { : m_on_state_changed_handle{Core::AddOnStateChangedCallback([this](Core::State state) {
if (state == Core::State::Paused) if (state == Core::State::Paused)
@ -86,8 +86,7 @@ void PerformanceTracker::Count()
m_dt_std = std::nullopt; m_dt_std = std::nullopt;
if (m_log_name && g_ActiveConfig.bLogRenderTimeToFile) LogRenderTimeToFile(diff);
LogRenderTimeToFile(diff);
} }
DT PerformanceTracker::GetSampleWindow() const DT PerformanceTracker::GetSampleWindow() const
@ -230,9 +229,13 @@ bool PerformanceTracker::QueueEmpty() const
void PerformanceTracker::LogRenderTimeToFile(DT val) void PerformanceTracker::LogRenderTimeToFile(DT val)
{ {
if (!m_log_name || !g_ActiveConfig.bLogRenderTimeToFile)
return;
if (!m_bench_file.is_open()) if (!m_bench_file.is_open())
{ {
File::OpenFStream(m_bench_file, File::GetUserPath(D_LOGS_IDX) + m_log_name, std::ios_base::out); File::OpenFStream(m_bench_file, File::GetUserPath(D_LOGS_IDX) + *m_log_name,
std::ios_base::out);
} }
m_bench_file << std::fixed << std::setprecision(8) << DT_ms(val).count() << std::endl; m_bench_file << std::fixed << std::setprecision(8) << DT_ms(val).count() << std::endl;

View File

@ -34,8 +34,8 @@ private:
} }
public: public:
PerformanceTracker(const char* log_name = nullptr, PerformanceTracker(const std::optional<std::string> log_name = std::nullopt,
const std::optional<s64> sample_window_us = {}); const std::optional<s64> sample_window_us = std::nullopt);
~PerformanceTracker(); ~PerformanceTracker();
PerformanceTracker(const PerformanceTracker&) = delete; PerformanceTracker(const PerformanceTracker&) = delete;
@ -77,7 +77,7 @@ private: // Functions for managing dt queue
int m_on_state_changed_handle; int m_on_state_changed_handle;
// Name of log file and file stream // Name of log file and file stream
const char* m_log_name; std::optional<std::string> m_log_name;
std::ofstream m_bench_file; std::ofstream m_bench_file;
// Last time Count() was called // Last time Count() was called