大数跨境

Kanzi优化利器-Resource Profiling

Kanzi优化利器-Resource Profiling 怿星科技
2019-11-01
2
导读:时间优化是Kanzi应用中最常见的优化项,定位启动时间则是启动优化过程中最为重要的一环。通过在Kanzi 3.6.3版本中引入Resource Profiling功能,只需轻松几步,一次就能定位到所有

时间优化是Kanzi应用中最常见的优化项,定位启动时间则是启动优化过程中最为重要的一环。通常,Kanzi工程的优化方法是不断的把工程模块进行删除细化,每删除一个模块,需测试一次,重复以上步骤直到完成。但是,定位一个点往往需要重复几次甚至十几次,这种方法对于小工程尚可,当工程量很大时,就需要花费很长的时间。今天我们将要介绍的方法不管是大工程还是小工程,只需轻松几步,一次就能定位到所有的模块,这种方法就是在3.6.3版本中引入的Resource Profiling功能。下面就来看看,如何应用这个功能。




如何应用Resource Profiling功能

Step 1:把dumpProfiling()的代码添加到你的主程序中;


伪代码如下:

void dumpProfiling()

{

//获取资源分析数据;资源包括各种节点、图片、模型、shader等等。

getResourceManager()->getResourceProfiler();

//把数据输出到文件“resource_profiling.json”里,

kanzi::ofstream out("resource_profiling.json");

//获取主消息队列的分析数据

getDomain()->getMainLoopTaskProfilerRegistry();

//获取启动的分析数据

getStartupProfilerRegistry();

//获取自定义的分析数据

kzProfilingGetDefaultRegistry();

//把以上三种数据一起输出到文件“application_profiling.json”里

kanzi::ofstream out("application_profiling.json");

}


Step 2:添加一个计时器用于触发这个功能;



Step 3:把以上工程编译好后在目标平台上运行,此时会生成两个文件—application_profiling.json 和 resource_profiling.json;


Step 4:把这两个文件拷贝到profiling.py文件目录下,运行profiling.py文件,生成一个tracing.json文件;


profiling.py文件的作用:把application_profiling.json 和 resource_profiling. json里面的数据重新排版,生成tracing.json文件。(tracing.json文件是可用于Chrome浏览器上,并能够被“开发者工具”解析、绘制成图表的文件。)


Step 5:打开Chrome浏览器,通过快捷键Shift+Ctrl+i打开“开发者工具”,在performance选项卡下,点击鼠标右键,导入tracing.json文件,你将看到以下的内容:



上图展示了从程序运行到所有执行过的代码所消耗的时间的详细信息。



案例分享


以Kanzi Engine下的Scroll_view工程为例,通过上述步骤,我们得出了上图中的测试结果。


从测试结果可以看出,整个程序共执行了4个线程。第一个线程的执行过程是从0MS开始,运行StartupInitialization, 约650MS结束。接下来,从661.8MS开始,执行MainLoopAppUpdate,约1600MS,再之后等等都能从表上查到相应的数据。剩下三个线程执行了Mesh data的加载的动作,每个执行过程的详细内容如下表:



在Summary里可以看到这个执行总耗时的详细数据;同时,在Event Log里,也可以看到每个模块的耗时情况及执行逻辑,如下表:



通常我们关注的是第一个MainLoopAppUpdate,因为这里有各种加载的详细耗时内容。从以上案例中,我们看出耗时较长的有两块—ResourceAcpuire和StarupLoadPrefab,我们展开这两项,看到如下表:



在这个例子里,我们可以看到模板StreetNameButton耗时较长,需要282.5ms。


一般来讲,在实际项目中我们定位到的耗时较长的点,通常是Kanzi中的相关节点,如加载一些较大的图片或模型,或是状态机中有大量图片,又或是使用了复杂的shader效果导致的。通过以上方法,我们可以快速定位性能瓶颈,从而可以针对性地进行优化了。


如此方便快捷的Kanzi性能优化利器,大家还在犹豫什么,赶紧用起来吧!


注:文中提到关于dumpProfiling()的函数及文件profiling.py因篇幅原因未能展示,如读者有需求,可联系我司进行免费提供,感谢您的支持!



相关精彩推荐:

Kanzi 3.6.4焦点控制功能全面升级,速来体验吧

HMI设计中的色彩运用小技巧

帧缓存(FrameBuffer)与Kanzi Render Pass

Kanzi资讯快递

Shader之水波纹

蒙板缓存(Stencil)渲染技术在Kanzi中的应用

Kanzi实现模糊效果原理及方式

Kanzi Studio的混融原理与透明效果



【声明】内容源于网络
0
0
怿星科技
让智能汽车研发更高效!
内容 428
粉丝 0
怿星科技 让智能汽车研发更高效!
总阅读795
粉丝0
内容428