Files
UnrealEngine/Engine/Source/Developer/MeshBuilder/Private/BuildStatisticManager.h
2025-05-18 13:04:45 +08:00

44 lines
1.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "CoreTypes.h"
#include "HAL/PlatformTime.h"
DECLARE_LOG_CATEGORY_EXTERN(LogMeshDescriptionBuildStatistic, Log, All);
namespace BuildStatisticManager
{
struct FStatisticData
{
public:
FStatisticData()
: TotalTime(0.0)
, Counter(0)
{ }
double TotalTime;
uint32 Counter;
};
class FBuildStatisticScope
{
public:
FBuildStatisticScope(const FString& InTimerDescription, FStatisticData& InStatisticData)
: TimerDescription(InTimerDescription)
, StatisticData(InStatisticData)
{
StartTime = FPlatformTime::Cycles();
}
~FBuildStatisticScope()
{
double ScopeTime = FPlatformTime::ToSeconds64(FPlatformTime::Cycles() - StartTime);
StatisticData.TotalTime += ScopeTime;
StatisticData.Counter += 1;
UE_LOG(LogMeshDescriptionBuildStatistic, Log, TEXT("%s: %f seconds - Counter: %d - Total Time: %f"), *TimerDescription, ScopeTime, StatisticData.Counter, StatisticData.TotalTime);
}
private:
FString TimerDescription;
int32 StartTime;
FStatisticData& StatisticData;
};
}