mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-09-02 23:55:52 +00:00
DolphinAnalytics: Extract report generation
Move generation of completed performance sample report to PerformanceSampleAggregator.
This commit is contained in:
parent
d9b0fd2805
commit
4138d691ae
3 changed files with 38 additions and 12 deletions
|
@ -296,23 +296,16 @@ void DolphinAnalytics::ReportPerformanceInfo(PerformanceSample&& sample)
|
|||
|
||||
if (m_performance_samples.size() >= NUM_PERFORMANCE_SAMPLES_PER_REPORT)
|
||||
{
|
||||
std::vector<u32> speed_times_1000(m_performance_samples.size());
|
||||
std::vector<u32> num_prims(m_performance_samples.size());
|
||||
std::vector<u32> num_draw_calls(m_performance_samples.size());
|
||||
for (size_t i = 0; i < m_performance_samples.size(); ++i)
|
||||
{
|
||||
speed_times_1000[i] = static_cast<u32>(m_performance_samples[i].speed_ratio * 1000);
|
||||
num_prims[i] = m_performance_samples[i].num_prims;
|
||||
num_draw_calls[i] = m_performance_samples[i].num_draw_calls;
|
||||
}
|
||||
PerformanceSampleAggregator::CompletedReport report =
|
||||
PerformanceSampleAggregator::GetReportFromSamples(m_performance_samples);
|
||||
|
||||
// The per game builder should already exist -- there is no way we can be reporting performance
|
||||
// info without a game start event having been generated.
|
||||
Common::AnalyticsReportBuilder builder(m_per_game_builder);
|
||||
builder.AddData("type", "performance");
|
||||
builder.AddData("speed", speed_times_1000);
|
||||
builder.AddData("prims", num_prims);
|
||||
builder.AddData("draw-calls", num_draw_calls);
|
||||
builder.AddData("speed", report.speed);
|
||||
builder.AddData("prims", report.primitives);
|
||||
builder.AddData("draw-calls", report.draw_calls);
|
||||
|
||||
Send(builder);
|
||||
|
||||
|
|
|
@ -42,3 +42,22 @@ std::chrono::microseconds PerformanceSampleAggregator::GetCurrentMicroseconds()
|
|||
std::chrono::high_resolution_clock::now().time_since_epoch();
|
||||
return std::chrono::duration_cast<std::chrono::microseconds>(time_since_epoch);
|
||||
}
|
||||
|
||||
PerformanceSampleAggregator::CompletedReport
|
||||
PerformanceSampleAggregator::GetReportFromSamples(const std::vector<PerformanceSample>& samples)
|
||||
{
|
||||
CompletedReport report;
|
||||
const size_t num_samples = samples.size();
|
||||
report.speed.resize(num_samples);
|
||||
report.primitives.resize(num_samples);
|
||||
report.draw_calls.resize(num_samples);
|
||||
|
||||
for (size_t i = 0; i < num_samples; ++i)
|
||||
{
|
||||
const PerformanceSample& sample = samples[i];
|
||||
report.speed[i] = static_cast<u32>(sample.speed_ratio * 1'000);
|
||||
report.primitives[i] = sample.num_prims;
|
||||
report.draw_calls[i] = sample.num_draw_calls;
|
||||
}
|
||||
return report;
|
||||
}
|
||||
|
|
|
@ -5,6 +5,11 @@
|
|||
#pragma once
|
||||
|
||||
#include <chrono>
|
||||
#include <vector>
|
||||
|
||||
#include "Common/CommonTypes.h"
|
||||
|
||||
#include "Core/PerformanceSample.h"
|
||||
|
||||
class PerformanceSampleAggregator
|
||||
{
|
||||
|
@ -14,4 +19,13 @@ public:
|
|||
static std::chrono::microseconds GetInitialSamplingStartTimestamp();
|
||||
static std::chrono::microseconds GetRepeatSamplingStartTimestamp();
|
||||
static std::chrono::microseconds GetCurrentMicroseconds();
|
||||
|
||||
struct CompletedReport
|
||||
{
|
||||
std::vector<u32> speed;
|
||||
std::vector<u32> primitives;
|
||||
std::vector<u32> draw_calls;
|
||||
};
|
||||
|
||||
static CompletedReport GetReportFromSamples(const std::vector<PerformanceSample>& samples);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue