UWA API ,优化逼格蹭蹭蹭

UWA API ,优化逼格蹭蹭蹭

在当前的UWA性能测评报告中,研发团队已经能够直观地看到逻辑代码中的效率瓶颈,定位性能开销最大的函数。但是,我们认为这还远远不够。我们希望能对函数中的部分代码段进行进一步检测、对代码中的关键变量进行监控、对重要的逻辑事件进行反馈......正因如此,UWA API孕育而生。我们希望通过它,可以帮助开发团队更加灵活地检测代码瓶颈、更加简单地反馈代码问题。

为了给研发团队提供更为灵活的测试方式,我们提供一组UWA API,以帮助研发人员收集自定义的数据信息,并在报告中进行查看。目前,UWA API 提供以下两种功能:自定义代码段测试自定义变量测试


自定义代码段测试

UWAEngine.PushSample/PopSample
public static void PushSample(string sampleName);
public static void PopSample();

参数

sampleName 自定义的函数标签

描述

在UWAEngine中添加一个自定义的函数标签,UWAEngine会对PushSamplePopSample之间的代码段统计CPU和堆内存开销,以及其他信息,并在UWA报告中的特定模块中进行显示。

示例

UWAEngine.PushSample(“MyCode”);
// My Beautiful Code
UWAEngine.PopSample();

报告界面

通过 PushSample 和 PopSample API, 您可以对任意代码段的性能进行分解和测试,并在测评报告中查看其详细的性能开销。

UWA Tech Doc

注意: 请确保 PushSample 和 PopSample 是成对使用的。如果两者之间使用了return语句提前退出代码段(或者在协程中使用yield return提前跳出代码段),则会造成 PushSample 和 PopSample 的配对不准确,从而导致数据错误。


自定义变量测试

在性能分析过程中,我们不仅希望可以对任意的代码段进行分析,同时我们也希望对某些重要参数进行监控。因此,UWA提供了相应的API,以方便您对代码变量进行全面的监控。

UWAEngine.Register 
public static void Register(object classObj, string instanceName, string fieldName, float updateInterval);

参数

classObj 类的实例
instanceName 实例的命名标签
fieldname 需要记录的非静态field的名字(field的类型只支持int,bool,float)
updateInterval 更新记录的时间间隔(单位:秒)

描述

在UWAEngine中添加一个类的对象,以及一个非静态变量名,并附上自定义的变量标签,UWAEngine会按照指定的时间间隔自动更新及记录该值,并在UWA报告中的特定模块中显示对应的曲线,曲线名为:classObj(instanceName).fieldname的名字。

示例

UWAEngine.Register(this, “Single”, “_positionX”, 1.0f);

报告界面

通过 UWAEngine.Register API, 您可以对重要变量参数进行监控,并在测评报告中查看其具体的使用情况。

UWA Tech Doc

 public static void Register(Type classType, string fieldName, float updateInterval);

参数

classType 类的类型
fieldname 需要记录的静态field的名字 (field的类型只支持int,bool,float)
updateInterval 更新记录的时间间隔

描述

在UWAEngine中添加一个类的类型,以及一个静态变量名,并附上自定义的变量标签,UWAEngine会按照指定的时间间隔自动更新及记录该值,并在UWA报告中的特定模块中显示对应的曲线,曲线名为:classType.field的名字。

示例

UWAEngine.Register(typeof(TerrainManager), “_currentTerrainIndex”, 1.0f);

报告界面

通过 UWAEngine.Register API, 您可以对重要变量参数进行监控,并在测评报告中查看其具体的使用情况。

UWA Tech Doc

UWAEngine.LogValue 
public static void LogValue(string valueName, float value);
public static void LogValue(string valueName, int value);
public static void LogValue(string valueName, bool value);

参数

valueName 自定义的变量标签
value 变量的值

描述

在UWAEngine中添加一个自定义的变量标签以及当前的数值, UWAEngine会记录下添加的时间点以及其数值,并在UWA报告中的特定模块中显示对应的曲线。

示例

UWAEngine.LogValue(“A Bool”, true);
UWAEngine.LogValue(“A Int”, Time.frameCount);
UWAEngine.LogValue(“A Float”, Time.deltaTime);

报告界面

通过 UWAEngine.LogValue API, 您可以特定时刻对指定变量参数进行监控,并在测评报告中查看其具体的使用情况。

UWA Tech Doc

注意:对于实时变化的变量,可以在Update中调用LogValue,而对于偶尔变化的变量,可以在改变时调用LogValue。