9#include "Containers/Array.h"
10#include "Containers/Map.h"
14#include "Misc/Optional.h"
23#ifndef ENABLE_LOADTIME_TRACKING
24 #define ENABLE_LOADTIME_TRACKING 0
27#ifndef ENABLE_LOADTIME_TRACKING_WITH_STATS
28 #define ENABLE_LOADTIME_TRACKING_WITH_STATS 0
31#define ENABLE_LOADTIME_RAW_TIMINGS 0
91#if ENABLE_LOADTIME_RAW_TIMINGS
108 double SerializeInlineShaderMaps;
179 double LoadImports_Event;
181 double MakeNextPrecacheRequestCurrent;
182 double FlushPrecacheBuffer;
183 double ProcessImportsAndExports_Event;
250 struct FAccumulatorTracker
272#if ENABLE_LOADTIME_TRACKING
273#define ACCUM_LOADTIME(TimerName, Time) FLoadTimeTracker::Get().ReportScopeTime(Time, FName(TimerName));
275#define ACCUM_LOADTIME(TimerName, Time)
278#if ENABLE_LOADTIME_TRACKING
279#define SCOPED_ACCUM_LOADTIME(TimerName, InstanceName) FScopedLoadTimeAccumulatorTimer AccumulatorTimer_##TimerName(FName(#TimerName), FName(InstanceName));
281#define SCOPED_ACCUM_LOADTIME(TimerName, InstanceName)
285#if ENABLE_LOADTIME_RAW_TIMINGS
286#define SCOPED_LOADTIMER_TEXT(TimerName)
287#define SCOPED_LOADTIMER_ASSET_TEXT(TimerName)
288#define SCOPED_LOADTIMER(TimerName) FScopedDurationTimer DurationTimer_##TimerName(FLoadTimeTracker::Get().TimerName);
289#define SCOPED_CUSTOM_LOADTIMER(TimerName)
290#define SCOPED_LOADTIMER_CNT(TimerName) FScopedDurationTimer DurationTimer_##TimerName(FLoadTimeTracker::Get().TimerName); FLoadTimeTracker::Get().TimerName##Cnt++;
291#define ADD_CUSTOM_LOADTIMER_META(TimerName, Key, Value)
294#define CUSTOM_LOADTIMER_LOG Cpu
297#if LOADTIMEPROFILERTRACE_ENABLED
300#define SCOPED_LOADTIMER_TEXT(TimerName) TRACE_CPUPROFILER_EVENT_SCOPE_TEXT_ON_CHANNEL(TimerName, LoadTimeChannel)
303#define SCOPED_LOADTIMER_ASSET_TEXT(TimerName) TRACE_CPUPROFILER_EVENT_SCOPE_TEXT_ON_CHANNEL(TimerName, AssetLoadTimeChannel)
306#define SCOPED_LOADTIMER(TimerName) TRACE_CPUPROFILER_EVENT_SCOPE_ON_CHANNEL(TimerName, LoadTimeChannel)
309#define SCOPED_CUSTOM_LOADTIMER(TimerName) UE_TRACE_LOG_SCOPED_T(CUSTOM_LOADTIMER_LOG, TimerName, LoadTimeChannel)
310#define ADD_CUSTOM_LOADTIMER_META(TimerName, Key, Value) << TimerName.Key(Value)
313#define SCOPED_LOADTIMER_CNT(TimerName)
317#define SCOPED_LOADTIMER_TEXT(TimerName)
318#define SCOPED_LOADTIMER_ASSET_TEXT(TimerName)
319#define SCOPED_LOADTIMER(TimerName)
320#define SCOPED_CUSTOM_LOADTIMER(TimerName)
321#define ADD_CUSTOM_LOADTIMER_META(TimerName, Key, Value)
322#define SCOPED_LOADTIMER_CNT(TimerName)
326#if ENABLE_LOADTIME_TRACKING_WITH_STATS && STATS
327 #define SCOPED_ACCUM_LOADTIME_STAT(InstanceName) FSimpleScopeSecondsStat ScopeTimer(FDynamicStats::CreateStatIdDouble<FStatGroup_STATGROUP_LoadTimeClass>(InstanceName, true), 1000.0);
328 #define ACCUM_LOADTIMECOUNT_STAT(InstanceName) INC_DWORD_STAT_FNAME_BY(FDynamicStats::CreateStatIdInt64<FStatGroup_STATGROUP_LoadTimeClassCount>(InstanceName+TEXT("_Count"), true).GetName(), 1);
330 #define SCOPED_ACCUM_LOADTIME_STAT(...)
331 #define ACCUM_LOADTIMECOUNT_STAT(...)
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void VerifyGlobalShaders(EShaderPlatform Platform, const ITargetPlatform *TargetPlatform, bool bLoadedFromCacheFile, const TArray< const FShaderType * > *OutdatedShaderTypes, const TArray< const FShaderPipelineType * > *OutdatedShaderPipelineTypes, const FShaderCompilerFlags &InExtraCompilerFlags)
Definition ShaderCompiler.cpp:4723
void EndLoad(FUObjectSerializeContext *LoadContext, TArray< UPackage * > *OutLoadedPackages)
Definition UObjectGlobals.cpp:2157
Definition LoadTimeTracker.h:35
static CORE_API FLoadTimeTracker & Get()
Definition LoadTimeTracker.cpp:27
static void StartAccumulatedLoadTimesStatic()
Definition LoadTimeTracker.h:77
static void StopAccumulatedLoadTimesStatic()
Definition LoadTimeTracker.h:84
static void DumpRawLoadTimesStatic()
Definition LoadTimeTracker.h:63
CORE_API void StopAccumulatedLoadTimes()
Definition LoadTimeTracker.cpp:383
CORE_API void ReportScopeTime(double ScopeTime, const FName ScopeLabel)
Definition LoadTimeTracker.cpp:33
CORE_API void ResetRawLoadTimes()
Definition LoadTimeTracker.cpp:229
CORE_API void ResetHighLevelLoadTimes()
Definition LoadTimeTracker.cpp:81
const TMap< FName, TArray< double > > & GetData() const
Definition LoadTimeTracker.h:53
static void ResetRawLoadTimesStatic()
Definition LoadTimeTracker.h:70
bool IsAccumulating()
Definition LoadTimeTracker.h:89
static void DumpHighLevelLoadTimesStatic()
Definition LoadTimeTracker.h:48
CORE_API void StartAccumulatedLoadTimes()
Definition LoadTimeTracker.cpp:377
CORE_API void DumpHighLevelLoadTimes() const
Definition LoadTimeTracker.cpp:49
CORE_API double & GetScopeTimeAccumulator(const FName &ScopeLabel, const FName &ScopeInstance)
Definition LoadTimeTracker.cpp:40
CORE_API void DumpRawLoadTimes() const
Definition LoadTimeTracker.cpp:90
Definition NameTypes.h:617
Definition ScopedTimers.h:66
Definition UnrealString.h.inl:34
Definition LoadTimeTracker.h:266
static CORE_API double DummyTimer
Definition LoadTimeTracker.h:267