2019-12-26 15:32:37 -05:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
2019-10-03 16:26:48 -04:00
|
|
|
|
|
|
|
|
#include "CsvProfilerModule.h"
|
|
|
|
|
#include "Analyzers/CsvProfilerTraceAnalysis.h"
|
|
|
|
|
#include "AnalysisServicePrivate.h"
|
|
|
|
|
#include "TraceServices/ModuleService.h"
|
|
|
|
|
|
2020-11-13 05:29:37 -04:00
|
|
|
namespace TraceServices
|
2019-10-03 16:26:48 -04:00
|
|
|
{
|
|
|
|
|
|
|
|
|
|
static const FName CsvProfilerModuleName("TraceModule_CsvProfiler");
|
|
|
|
|
static const FName CsvProfilerProviderName("CsvProfilerProvider");
|
|
|
|
|
|
|
|
|
|
void FCsvProfilerModule::GetModuleInfo(FModuleInfo& OutModuleInfo)
|
|
|
|
|
{
|
|
|
|
|
OutModuleInfo.Name = CsvProfilerModuleName;
|
|
|
|
|
OutModuleInfo.DisplayName = TEXT("CsvProfiler");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void FCsvProfilerModule::OnAnalysisBegin(IAnalysisSession& Session)
|
|
|
|
|
{
|
|
|
|
|
const IFrameProvider& FrameProvider = ReadFrameProvider(Session);
|
|
|
|
|
const IThreadProvider& ThreadProvider = ReadThreadProvider(Session);
|
|
|
|
|
ICounterProvider& CounterProvider = EditCounterProvider(Session);
|
|
|
|
|
FCsvProfilerProvider* CsvProfilerProvider = new FCsvProfilerProvider(Session);
|
|
|
|
|
Session.AddProvider(CsvProfilerProviderName, CsvProfilerProvider);
|
|
|
|
|
Session.AddAnalyzer(new FCsvProfilerAnalyzer(Session, *CsvProfilerProvider, CounterProvider, FrameProvider, ThreadProvider));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void FCsvProfilerModule::GenerateReports(const IAnalysisSession& Session, const TCHAR* CmdLine, const TCHAR* OutputDirectory)
|
|
|
|
|
{
|
2020-11-13 05:29:37 -04:00
|
|
|
const ICsvProfilerProvider* CsvProfilerProvider = ReadCsvProfilerProvider(Session);
|
2019-10-03 16:26:48 -04:00
|
|
|
if (CsvProfilerProvider)
|
|
|
|
|
{
|
|
|
|
|
CsvProfilerProvider->EnumerateCaptures([CsvProfilerProvider, &OutputDirectory](const FCaptureInfo& CaptureInfo)
|
|
|
|
|
{
|
|
|
|
|
Table2Csv(CsvProfilerProvider->GetTable(CaptureInfo.Id), *(FString(OutputDirectory) / TEXT("CsvProfiler") / CaptureInfo.Filename));
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const ICsvProfilerProvider* ReadCsvProfilerProvider(const IAnalysisSession& Session)
|
|
|
|
|
{
|
|
|
|
|
return Session.ReadProvider<ICsvProfilerProvider>(CsvProfilerProviderName);
|
|
|
|
|
}
|
|
|
|
|
|
2020-11-13 05:29:37 -04:00
|
|
|
} // namespace TraceServices
|