5#include "Containers/Map.h"
15 #define DO_TIMEGUARD 0
18#ifndef DO_LIGHTWEIGHT_TIMEGUARD
20 #define DO_LIGHTWEIGHT_TIMEGUARD ( WITH_ENGINE && !UE_SERVER && !NO_LOGGING && !WITH_EDITOR )
136UE_DEPRECATED(4.21,
"FLightweightTimeGuard has been renamed to FTimeGuard.")
139#define SCOPE_TIME_GUARD(name) \
140 FTimeGuard ANONYMOUS_VARIABLE(TimeGuard)(name);
142#define SCOPE_TIME_GUARD_MS(name, timeMs) \
143 FTimeGuard ANONYMOUS_VARIABLE(TimeGuard)(name, NAME_None, timeMs);
145#define SCOPE_TIME_GUARD_NAMED(name, fname) \
146 FTimeGuard ANONYMOUS_VARIABLE(TimeGuard)(name, fname);
148#define SCOPE_TIME_GUARD_NAMED_MS(name, fname, timems) \
149 FTimeGuard ANONYMOUS_VARIABLE(TimeGuard)(name, fname, timems);
154#define SCOPE_TIME_GUARD_DELEGATE(inDelegate) \
155 FTimeGuard ANONYMOUS_VARIABLE(TimeGuard)(inDelegate);
157#define SCOPE_TIME_GUARD_DELEGATE_MS(inDelegate, timems) \
158 FTimeGuard ANONYMOUS_VARIABLE(TimeGuard)(inDelegate, timems);
160#define CLEAR_TIME_GUARDS FTimeGuard::ClearData
162#define ENABLE_TIME_GUARDS(bEnabled) FTimeGuard::SetEnabled(bEnabled)
166#define SCOPE_TIME_GUARD(name)
167#define SCOPE_TIME_GUARD_MS(name, timeMs)
168#define SCOPE_TIME_GUARD_NAMED(name, fname)
169#define SCOPE_TIME_GUARD_NAMED_MS(name, fname, timeMs)
170#define CLEAR_TIME_GUARDS()
171#define ENABLE_TIME_GUARDS(bEnabled)
177#if DO_LIGHTWEIGHT_TIMEGUARD
179 #define LIGHTWEIGHT_TIME_GUARD_BEGIN( Name, ThresholdMS ) \
180 float PREPROCESSOR_JOIN(__TimeGuard_ThresholdMS_, Name) = ThresholdMS; \
181 uint64 PREPROCESSOR_JOIN(__TimeGuard_StartCycles_, Name) = ( ThresholdMS > 0.0f ) ? FPlatformTime::Cycles64() : 0;
183 #define LIGHTWEIGHT_TIME_GUARD_END( Name, NameStringCode ) \
184 if ( PREPROCESSOR_JOIN(__TimeGuard_ThresholdMS_, Name) > 0.0f ) \
186 float PREPROCESSOR_JOIN(__TimeGuard_MSElapsed_,Name) = FPlatformTime::ToMilliseconds64( FPlatformTime::Cycles64() - PREPROCESSOR_JOIN(__TimeGuard_StartCycles_,Name) ); \
187 if ( PREPROCESSOR_JOIN(__TimeGuard_MSElapsed_,Name) > PREPROCESSOR_JOIN(__TimeGuard_ThresholdMS_, Name) ) \
189 FString ReportName = NameStringCode; \
190 UE_LOG(LogCore, Warning, TEXT("LIGHTWEIGHT_TIME_GUARD: %s - %s took %.2fms!"), TEXT(#Name), *ReportName, PREPROCESSOR_JOIN(__TimeGuard_MSElapsed_,Name)); \
194 #define LIGHTWEIGHT_TIME_GUARD_BEGIN( Name, ThresholdMS )
195 #define LIGHTWEIGHT_TIME_GUARD_END( Name, NameStringCode )
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define DECLARE_DELEGATE_RetVal(ReturnValueType, DelegateName)
Definition DelegateCombinations.h:41
auto GetData(const TStringConversion< Converter, DefaultConversionSize > &Conversion) -> decltype(Conversion.Get())
Definition StringConv.h:802
CORE_API bool IsInGameThread()
Definition ThreadingBase.cpp:185
Definition ContainerAllocationPolicies.h:1660
Definition NameTypes.h:617
Definition UnrealString.h.inl:34
void SetEnabled(bool bInEnabled)
Definition ShaderPrint.cpp:317
static double Seconds()
Definition AndroidPlatformTime.h:20