zoukankan      html  css  js  c++  java
  • UDK脚本函数性能工具

    数据采集

    游戏中使用控制台命令来采集脚本函数性能数据

    ProfileGame Start  // 开始捕获性能数据

    ProfileGame Stop  // 停止捕获并保存数据文件,并保存到[GameName]ProfilingT-YYYY.MM.DD-hh.mm.ss.gprof文件中

    ProfileGame 15  // 开始捕获一个时长为15s的性能数据到[GameName]ProfilingT-YYYY.MM.DD-hh.mm.ss.gprof文件中

    基本概念

    Time Threshold(时间阈值):用来过滤,只显示大于时间阈值的数据

    Incl(包含时间):包括了子函数执行时间的总执行时间

    excl(独占时间):不包括子函数执行时间的函数体执行时间,函数执行本身花费的时间

    GameplayProfiler简介

    使用GameplayProfiler工具进行数据可视化分析   udn中文   udn英文

    ① GameplayProfiler使用C#编写,依赖一个名为MSChart的.net表格控件。因此,在运行该工具前,需要安装该组件

    ② GameplayProfiler.exe可执行程序在Binaries目录下可以找到,其源码在DevelopmentToolsGameplayProfiler目录中

    GameplayProfiler说明:

    ① 通过FileOpen按钮来打开一个gprof格式的性能数据文件。如下图:T-2018.07.03-19.21.15.gprof

        曲线图可以拖拽放大,放大后可以看到这个文件记录了0~1123帧的性能数据

    ② 绿线表示每帧花费的时间,蓝线表示每帧执行脚本花费的时间  -- 注:单位为ms

        通过这两条线可以看出:是否所有的帧时间峰值(瞬卡)和脚本或游戏性更新有关

    ③ 下面例子中,选择第772帧,并将Time Threshold(时间阈值)设置为0.18ms(即:只显示大于0.18ms的数据)

        注:在文本框中输入0.18,回车会变成0.2(文本框设置了0.1的最小精度,工具bug导致),但实际上还是应用了0.18的阈值

    frame actor/ class call graph

    列出某帧中所有Actor对象的脚本函数执行时间超过Time Threshold的调用栈(降序)

    ① 左边按照Actor所在关卡进行归类,前面的数值为incl(包含时间,单位ms)

    ② 右边按照Actor类型进行归类,前面的数值为incl(包含时间,单位ms),后面的3 excl, 69 incl表示时间阈值设置为0时,直接Child节点个数为3,所有Child节点个数为69

    frame function summary

    列出某帧中incl(包含时间)超过Time Threshold的脚本函数(降序)

    ① calls:当前帧调用的次数

        incl. per call = incl. / calls,单位ms

        excl. per call = excl. / calls,单位ms

    ② 点击对应列可以对数据进行升序降序排列

    frame class hierarchy

    按照继承树列出某帧中incl(包含时间)超过Time Threshold的Actor实例、ActorComponent实例、Function(降序)

    ① 各个实例对象前面的数值为incl(包含时间,单位ms)

    frame function call graph

    列出某帧中脚本函数累计执行时间的调用栈(降序) -- 不进行Time Threshold过滤

    ① 各个实例对象前面的数值为incl(包含时间),单位ms

    aggr. function summary(aggregate function summary,合计函数概要)

    整段性能数据(所有帧)的脚本函数执行时间统计信息(降序)   -- 不进行Time Threshold过滤

    ① incl.为整段性能数据(所有帧)包含时间之和

        max incl.为整段性能数据(所有帧)中包含时间为最大的一帧的数值

        excl.整段性能数据(所有帧)独占时间之和

        max excl.为整段性能数据(所有帧)中独占时间为最大的一帧的数值

        calls为整段性能数据(所有帧)函数调用次数之和

        avg calls / frame  平均每帧函数调用次数

        incl. per frame  平均每帧函数的包含时间

        excl. per frame  平均每帧函数的独占时间

    ② 点击对应列可以对数据进行升序降序排列

    ③ 上图红色和深红色曲线分别为选中3个函数:UTGame.TGHUD.PostRender、UTGame.TGPlayerController.ReplicateMove、TGADBase.TGADBaseHUD.TraceActorEX的每帧的incl.(包含时间)和excl.(独占时间)数据

    aggr. function call graph(aggregate function call graph,合计函数调用栈)

    整段性能数据(所有帧)的脚本函数执行时间的调用栈(降序)   -- 不进行Time Threshold过滤

     ① 脚本函数前面的数值为累计incl(包含时间  单位ms)和调用次数

     ② 上图红色和深红色曲线分别为Engine.PlayerController.PlayerTick的每帧的incl.(包含时间)和excl.(独占时间)数据

  • 相关阅读:
    自学Python三个月能赚钱吗?
    Python如何优雅删除字符列表空字符及None元素
    Python如何对XML 解析
    Python爬虫爬取博客实现可视化过程解析
    更改折旧范围
    尚未被定义为调节科目
    查看事务码
    固定资产创建屏幕分类,必填,字段组规则,折旧科目的设置等
    固定资产配置非税购置的进项税标识符、指定折旧表,分配公司代码
    维护消息
  • 原文地址:https://www.cnblogs.com/kekec/p/9265084.html
Copyright © 2011-2022 走看看