网站建设推广济南兴田德润优惠吗,无锡网科信息技术有限公司,软件工程四大方向,易语言做网站在使用C开发UE引擎#xff0c;有时候需要监控函数的执行的执行效率#xff0c;这个时候有两种方式可以使用。 1. 执行代码耗时时间 double ThisTime 0;{SCOPE_SECONDS_COUNTER(ThisTime);// ...// 一串代码// ...}UE_LOG(LogTemp, Log, TEXT(Stats::Broadcast %.2f开发UE引擎有时候需要监控函数的执行的执行效率这个时候有两种方式可以使用。 1. 执行代码耗时时间 double ThisTime 0;{SCOPE_SECONDS_COUNTER(ThisTime);// ...// 一串代码// ...}UE_LOG(LogTemp, Log, TEXT(Stats::Broadcast %.2f), ThisTime); 这样就可以输出这一段代码消耗时间此方法会捕获时间以秒为单位传递并将增量时间添加到传入的变量。 2. 函数每帧监控 在一些函数是每帧都要执行的时候那就可以用UE的统计系统来显示这样更方便。 先在CPP定义一个自定义监听组 DECLARE_STATS_GROUP(TEXT(DTActor), STATGROUP_DTActor, STATCAT_Test); 这样启动程序的时候 就可以看到自己定义的组 然后需要定义函数监听模块 DECLARE_CYCLE_STAT(TEXT(DTActor Tick), STAT_Tick, STATGROUP_DTActor);
DECLARE_CYCLE_STAT(TEXT(DTActor Call), STAT_Call, STATGROUP_DTActor); 并在相应的函数中启动相应模块 void ADTActor::Tick(float DeltaTime)
{SCOPE_CYCLE_COUNTER(STAT_Tick);Super::Tick(DeltaTime);
}
void ADTActor::Call()
{SCOPE_CYCLE_COUNTER(STAT_Call);
} 这样在运行关卡的时候就会显示函数的具体执行时间 以下是这个Actor的完整代码可以自己测试一下。 DTActor.h // Copyright 2023 Dexter.Wan. All Rights Reserved.
// EMail: 45141961qq.com
// Website: https://dt.cq.cn/#pragma once#include CoreMinimal.h
#include GameFramework/Actor.h
#include DTActor.generated.hUCLASS()
class DTMOVIE_API ADTActor : public AActor
{GENERATED_BODY()public:ADTActor();protected:virtual void BeginPlay() override;public:virtual void Tick(float DeltaTime) override;void Call();
}; DTActor.cpp8 // Copyright 2023 Dexter.Wan. All Rights Reserved.
// EMail: 45141961qq.com
// Website: https://dt.cq.cn/#include DTActor.hDECLARE_STATS_GROUP(TEXT(DTActor), STATGROUP_DTActor, STATCAT_Test);
DECLARE_CYCLE_STAT(TEXT(DTActor Tick), STAT_Tick, STATGROUP_DTActor);
DECLARE_CYCLE_STAT(TEXT(DTActor Call), STAT_Call, STATGROUP_DTActor);ADTActor::ADTActor()
{PrimaryActorTick.bCanEverTick true;
}void ADTActor::BeginPlay()
{Super::BeginPlay();
}void ADTActor::Tick(float DeltaTime)
{SCOPE_CYCLE_COUNTER(STAT_Tick);Super::Tick(DeltaTime);FString S;for ( int n 0; n 50000; n ){S TEXT(1);}Call();Call();
}void ADTActor::Call()
{SCOPE_CYCLE_COUNTER(STAT_Call);FString S;for ( int n 0; n 50000; n ){S TEXT(1);}
} 80后程序员https://dt.cq.cn/archives/357