UWA API ,优化逼格蹭蹭蹭
- 作者:admin
- /
- 时间:2016年02月29日
- /
- 浏览:5015 次
- /
- 分类:万象更新
在当前的UWA性能测评报告中,研发团队已经能够直观地看到逻辑代码中的效率瓶颈,定位性能开销最大的函数。但是,我们认为这还远远不够。我们希望能对函数中的部分代码段进行进一步检测、对代码中的关键变量进行监控、对重要的逻辑事件进行反馈......正因如此,UWA API孕育而生。我们希望通过它,可以帮助开发团队更加灵活地检测代码瓶颈、更加简单地反馈代码问题。
为了给研发团队提供更为灵活的测试方式,我们提供一组UWA API,以帮助研发人员收集自定义的数据信息,并在报告中进行查看。目前,UWA API 提供以下两种功能:自定义代码段测试和自定义变量测试。
自定义代码段测试
UWAEngine.PushSample/PopSample
public static void PushSample(string sampleName);
public static void PopSample();
参数
sampleName 自定义的函数标签
描述
在UWAEngine中添加一个自定义的函数标签,UWAEngine会对PushSample和PopSample之间的代码段统计CPU和堆内存开销,以及其他信息,并在UWA报告中的特定模块中进行显示。
示例
UWAEngine.PushSample(“MyCode”);
// My Beautiful Code
UWAEngine.PopSample();
报告界面
通过 PushSample 和 PopSample API, 您可以对任意代码段的性能进行分解和测试,并在测评报告中查看其详细的性能开销。
注意: 请确保 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, 您可以对重要变量参数进行监控,并在测评报告中查看其具体的使用情况。
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, 您可以对重要变量参数进行监控,并在测评报告中查看其具体的使用情况。
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, 您可以特定时刻对指定变量参数进行监控,并在测评报告中查看其具体的使用情况。
注意:对于实时变化的变量,可以在Update中调用LogValue,而对于偶尔变化的变量,可以在改变时调用LogValue。