UE4性能Profile的各种方式

Profile渲染阶段时间--stat scenerendering

在RenderCore(.h,.cpp)声明定义profile字段,加入到局部函数,可以通过stat scenerendering指令来打印出相应时间

Profile CPU执行事件

stat相关声明

声明stat Group

DECLARE_STATS_GROUP(TEXT("TestTime"), STATGROUP_TestTime, STATCAT_Advanced);

声明stat Group下的具体标记

DECLARE_STATS_GROUP(TEXT("TestTime"), STATGROUP_TestTime, STATCAT_Advanced);
DECLARE_CYCLE_STAT(TEXT("TestMyActorTick"), STAT_TestMyActorTick, STATGROUP_TestTime);
DECLARE_CYCLE_STAT(TEXT("TestMyActorCal"), STAT_TestMyActorCal, STATGROUP_TestTime);
DECLARE_CYCLE_STAT(TEXT("TestMyActorCount"), STAT_TestMyActorCount, STATGROUP_TestTime);

SCOPE_CYCLE_COUNTER给一段程序打上标记,从标记到从该段程序退出的时间则为这个标记执行的事件

stat使用例子

来一个例子,下面的actor tick做了两次累加函数,用三个标记分别标记Tick, Test, Test1三个函数。

DECLARE_STATS_GROUP(TEXT("TestTime"), STATGROUP_TestTime, STATCAT_Advanced);
DECLARE_CYCLE_STAT(TEXT("TestMyActorTick"), STAT_TestMyActorTick, STATGROUP_TestTime);
DECLARE_CYCLE_STAT(TEXT("TestMyActorCal"), STAT_TestMyActorCal, STATGROUP_TestTime);
DECLARE_CYCLE_STAT(TEXT("TestMyActorCount"), STAT_TestMyActorCount, STATGROUP_TestTime);

UCLASS()
class TESTHOUDINIPROJECT_API AMyActor : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	AMyActor();

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;


	UPROPERTY(EditAnywhere)
		int32 Count1;

	UPROPERTY(EditAnywhere)
		int32 Count2;

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

private:
	void Test(int32 Count);
	void Test1(int32 Count);

};
void AMyActor::Tick(float DeltaTime)
{
	SCOPE_CYCLE_COUNTER(STAT_TestMyActorTick);
	Super::Tick(DeltaTime);
	Test(Count1);
	Test1(Count2);

}

void AMyActor::Test(int32 Count)
{
	SCOPE_CYCLE_COUNTER(STAT_TestMyActorCal);

	int64 Total = 0;

	for (int32 Index = 0; Index < Count; ++Index)
	{
		Total += 1;
	}

}

void AMyActor::Test1(int32 Count)
{
	SCOPE_CYCLE_COUNTER(STAT_TestMyActorCount);

	int64 Total = 0;

	for (int32 Index = 0; Index < Count; ++Index)
	{
		Total += 1;
	}
}

从Count2 = 3Count1推测 Time(Test1) = 3Time(Test)

Stat TestTime

Stat TestTime可以探查STATGROUP_TestTime这个组的所有标记阶段执行事件

 Stat StartFile &  Stat StopFile

 Stat StartFile &  Stat StopFile是执行CPU执行事件片段的命令, Stat StartFile开始执行CPU执行事件抓取,Stat StopFile结束抓取CPU执行事件片段,并生成一个统计文件。

 Tools->SessionFrontend打开Profile工具

 点Load按钮对目标统计文件加载

 统计组: 可以查看对应标记组之下每个标记在整个统计阶段的Min/Avg/Max执行时间

 

 统计事件列表: 选中某一帧之后,可以查看一帧数下各个标记执行的时间

 从上面可以看出TestMyActorTick花了6.528ms

 可以看到TestMyActorCount标记的Test1函数执行时间差不多是TestMyActorCal执行函数Test的三倍。

[1]这里得注意的是上面图显示是这个标记执行的总时间,而非是执行一次这个标记的时间,假设你调用100次被标记函数的循环,这个标记执行的时间 = 100次这个函数执行总时间。

[2]Self表示当前函数内除了函数内的所有标记外的执行时间

参考资料

[1]https://docs.unrealengine.com/5.0/zh-CN/stat-commands-in-unreal-engine/

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好,我会为您提供关于UE4游戏服务器性能测试和性能优化方法的建议。 1. UE4游戏服务器性能测试 对于UE4游戏服务器性能测试,您可以使用一些工具来帮助您评估服务器性能和稳定性。以下是一些常用的工具: - UE4自带的性能分析器:您可以通过在编辑器中启用性能分析模式来使用它。它可以帮助您监视服务器的帧率、内存使用情况、网络延迟、CPU使用率等等。 - PerfMon:这是一个Windows内置的系统性能监视器,可以监视CPU、内存、磁盘、网络等方面的性能指标。 - Visual Studio Profiler:如果您使用Visual Studio编写UE4服务器代码,那么可以使用Visual Studio的性能分析器来监视服务器代码的性能指标。 2. UE4性能优化方法(工具篇) UE4性能优化是一个复杂的过程,需要您对游戏引擎的运行原理有一定的了解。以下是一些常用的工具,可以帮助您进行UE4性能优化: - UE4自带的性能分析器:除了用于服务器性能测试,它也可以用于优化游戏性能。您可以通过它来查找哪些代码或蓝图节点占用了大量的CPU时间、内存等资源,以便您进行优化。 - Unreal Insights:这是一个高级性能分析工具,提供了更多的性能指标和可视化图表,可以帮助您深入分析性能瓶颈。 - Intel VTune Amplifier:这是一款专业的性能分析工具,可以帮助您分析CPU、内存、IO等方面的性能瓶颈。 - PIX for Windows:这是一个Windows平台上的性能分析工具,可以帮助您分析GPU性能瓶颈。 总之,UE4游戏服务器性能测试和性能优化是一个复杂的过程,需要您深入了解游戏引擎的运行原理和使用专业的工具进行分析。希望我的回答可以帮助到您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值