UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PerfCountersModule.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
6#include "Containers/Map.h"
8#include "CoreMinimal.h"
10#include "HAL/Platform.h"
14
15class FName;
16class FOutputDevice;
17struct FHistogram;
18template <class CharType, class PrintPolicy>
19class TJsonWriter;
20template <class CharType>
22template <class CharType> struct TPrettyJsonPrintPolicy;
23
25struct FHistogram;
26
33
43
48{
49public:
50
52 {
54 Transient = (1 << 0)
55 };
56
67
85
88
89
90 virtual ~IPerfCounters() {};
91
93 virtual const FString& GetInstanceName() const = 0;
94
96 virtual double GetNumber(const FString& Name, double DefaultValue = 0.0) = 0;
97
99 virtual void SetNumber(const FString& Name, double Value, uint32 Flags = 0) = 0;
100
102 virtual void SetString(const FString& Name, const FString& Value, uint32 Flags = 0) = 0;
103
105 virtual void SetJson(const FString& Name, const FProduceJsonCounterValue& Callback, uint32 Flags = 0) = 0;
106
109
112
114 virtual FString GetAllCountersAsJson() = 0;
115
117 virtual void ResetStatsForNextPeriod() = 0;
118
121
123 virtual bool StartMachineLoadTracking() = 0;
124
126 virtual bool StartMachineLoadTracking(double TickRate, const TArray<double>& FrameTimeHistogramBucketsMs) = 0;
127
129 virtual bool StopMachineLoadTracking() = 0;
130
132 virtual bool ReportUnplayableCondition(const FString& ConditionDescription) = 0;
133
134public:
135
137 int32 Get(const FString& Name, int32 Val = 0)
138 {
139 return static_cast<int32>(GetNumber(Name, static_cast<double>(Val)));
140 }
141
142 uint32 Get(const FString& Name, uint32 Val = 0)
143 {
144 return static_cast<uint32>(GetNumber(Name, static_cast<double>(Val)));
145 }
146
147 float Get(const FString& Name, float Val = 0.0f)
148 {
149 return static_cast<float>(GetNumber(Name, static_cast<double>(Val)));
150 }
151
152 double Get(const FString& Name, double Val = 0.0)
153 {
154 return GetNumber(Name, Val);
155 }
156
166 int32 Increment(const FString & Name, int32 Add = 1, int32 DefaultValue = 0, uint32 Flags = IPerfCounters::Flags::Transient)
167 {
168 int32 CurrentValue = Get(Name, DefaultValue) + Add;
169 Set(Name, CurrentValue, Flags);
170 return CurrentValue;
171 }
172
175 void Set(const FString& Name, int32 Val, uint32 Flags = 0)
176 {
177 SetNumber(Name, (double)Val, Flags);
178 }
179
180 void Set(const FString& Name, uint32 Val, uint32 Flags = 0)
181 {
182 SetNumber(Name, (double)Val, Flags);
183 }
184
185 void Set(const FString& Name, float Val, uint32 Flags = 0)
186 {
187 SetNumber(Name, (double)Val, Flags);
188 }
189
190 void Set(const FString& Name, double Val, uint32 Flags = 0)
191 {
193 }
194
195 void Set(const FString& Name, int64 Val, uint32 Flags = 0)
196 {
197 SetString(Name, FString::Printf(TEXT("%lld"), Val), Flags);
198 }
199
200 void Set(const FString& Name, uint64 Val, uint32 Flags = 0)
201 {
202 SetString(Name, FString::Printf(TEXT("%llu"), Val), Flags);
203 }
204
205 void Set(const FString& Name, const FString& Val, uint32 Flags = 0)
206 {
208 }
209
210 void Set(const FString& Name, const FProduceJsonCounterValue& Callback, uint32 Flags = 0)
211 {
212 SetJson(Name, Callback, Flags);
213 }
214};
215
216
221{
222public:
223
230 static inline IPerfCountersModule& Get()
231 {
232 return FModuleManager::LoadModuleChecked< IPerfCountersModule >("PerfCounters");
233 }
234
240 static inline bool IsAvailable()
241 {
242 return FModuleManager::Get().IsModuleLoaded("PerfCounters");
243 }
244
247
252
260 virtual IPerfCounters* CreatePerformanceCounters(const FString& UniqueInstanceId = TEXT("")) = 0;
261};
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:48
#define DECLARE_DELEGATE_RetVal_TwoParams(ReturnValueType, DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:63
TSharedRef< TJsonWriter< TCHAR, TPrettyJsonPrintPolicy< TCHAR > > > FPrettyJsonWriter
Definition PerfCountersModule.h:24
float Val(const FString &Value)
Definition UnrealMath.cpp:3163
uint32_t uint32
Definition binka_ue_file_header.h:6
CORE_API bool IsModuleLoaded(const FName InModuleName) const
Definition ModuleManager.cpp:347
static CORE_API FModuleManager & Get()
Definition ModuleManager.cpp:199
Definition NameTypes.h:617
Definition OutputDevice.h:133
Definition ModuleInterface.h:14
Definition PerfCountersModule.h:221
virtual IPerfCounters * GetPerformanceCounters() const =0
static PERFCOUNTERS_API int32 GetHTTPStatsPort()
Definition PerfCountersModule.cpp:77
virtual IPerfCounters * CreatePerformanceCounters(const FString &UniqueInstanceId=TEXT(""))=0
static bool IsAvailable()
Definition PerfCountersModule.h:240
static IPerfCountersModule & Get()
Definition PerfCountersModule.h:230
Definition PerfCountersModule.h:48
int32 Get(const FString &Name, int32 Val=0)
Definition PerfCountersModule.h:137
Flags
Definition PerfCountersModule.h:52
@ Transient
Definition PerfCountersModule.h:54
void Set(const FString &Name, int64 Val, uint32 Flags=0)
Definition PerfCountersModule.h:195
float Get(const FString &Name, float Val=0.0f)
Definition PerfCountersModule.h:147
virtual FString GetAllCountersAsJson()=0
void Set(const FString &Name, double Val, uint32 Flags=0)
Definition PerfCountersModule.h:190
void Set(const FString &Name, uint32 Val, uint32 Flags=0)
Definition PerfCountersModule.h:180
void Set(const FString &Name, uint64 Val, uint32 Flags=0)
Definition PerfCountersModule.h:200
virtual const TMap< FString, FJsonVariant > & GetAllCounters()=0
double Get(const FString &Name, double Val=0.0)
Definition PerfCountersModule.h:152
virtual bool ReportUnplayableCondition(const FString &ConditionDescription)=0
virtual void SetNumber(const FString &Name, double Value, uint32 Flags=0)=0
virtual void SetJson(const FString &Name, const FProduceJsonCounterValue &Callback, uint32 Flags=0)=0
virtual double GetNumber(const FString &Name, double DefaultValue=0.0)=0
virtual void SetString(const FString &Name, const FString &Value, uint32 Flags=0)=0
virtual TPerformanceHistogramMap & PerformanceHistograms()=0
int32 Increment(const FString &Name, int32 Add=1, int32 DefaultValue=0, uint32 Flags=IPerfCounters::Flags::Transient)
Convenience method for incrementing a transient counter.
Definition PerfCountersModule.h:166
virtual void ResetStatsForNextPeriod()=0
uint32 Get(const FString &Name, uint32 Val=0)
Definition PerfCountersModule.h:142
virtual bool StopMachineLoadTracking()=0
void Set(const FString &Name, const FProduceJsonCounterValue &Callback, uint32 Flags=0)
Definition PerfCountersModule.h:210
virtual const FString & GetInstanceName() const =0
void Set(const FString &Name, int32 Val, uint32 Flags=0)
Definition PerfCountersModule.h:175
virtual ~IPerfCounters()
Definition PerfCountersModule.h:90
virtual bool StartMachineLoadTracking(double TickRate, const TArray< double > &FrameTimeHistogramBucketsMs)=0
virtual bool StartMachineLoadTracking()=0
void Set(const FString &Name, const FString &Val, uint32 Flags=0)
Definition PerfCountersModule.h:205
TMap< FName, FHistogram > TPerformanceHistogramMap
Definition PerfCountersModule.h:87
void Set(const FString &Name, float Val, uint32 Flags=0)
Definition PerfCountersModule.h:185
virtual FPerfCounterExecCommandCallback & OnPerfCounterExecCommand()=0
Definition Array.h:670
Definition JsonWriter.h:85
Definition UnrealString.h.inl:34
Definition SharedPointer.h:153
Definition Histogram.h:34
Definition PerfCountersModule.h:58
FString StringValue
Definition PerfCountersModule.h:60
FProduceJsonCounterValue CallbackValue
Definition PerfCountersModule.h:62
uint32 Flags
Definition PerfCountersModule.h:63
enum IPerfCounters::FJsonVariant::@1659 Format
double NumberValue
Definition PerfCountersModule.h:61
FJsonVariant()
Definition PerfCountersModule.h:65
@ Null
Definition PerfCountersModule.h:59
@ String
Definition PerfCountersModule.h:59
@ Number
Definition PerfCountersModule.h:59
@ Callback
Definition PerfCountersModule.h:59
Definition PerfCountersModule.h:70
static PERFCOUNTERS_API const FName ZeroLoadFrameTime
Definition PerfCountersModule.h:83
static PERFCOUNTERS_API const FName FrameTimePeriodic
Definition PerfCountersModule.h:74
static PERFCOUNTERS_API const FName ServerReplicateActorsTime
Definition PerfCountersModule.h:78
static PERFCOUNTERS_API const FName FrameTimeWithoutSleep
Definition PerfCountersModule.h:76
static PERFCOUNTERS_API const FName SleepTime
Definition PerfCountersModule.h:80
static PERFCOUNTERS_API const FName FrameTime
Definition PerfCountersModule.h:72
Definition PrettyJsonPrintPolicy.h:16