LuaProfiler:Lua内存优化工具教程

Posted Unity3D游戏开发精华教程干货

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LuaProfiler:Lua内存优化工具教程相关的知识,希望对你有一定的参考价值。

前言

最近做的手游项目(Unity+tolua架构)快接近尾声了,功能差不多齐备之后开始对各种技术指标进行优化。Unity自带的Profiler能对C#的Cpu和内存使用状况进行比较好的分析,但是无法涵盖lua部分,很多人可能跟我一样,对lua部分的优化觉得无从下手。本人在网上搜了很多工具之后发现了这个很实用的工具,能够对内存消耗情况和lua和mono的GC进行很好的监测,废话不多说,一起来看。

下载链接

github.com/ElPsyCongree

https://github.com/ElPsyCongree/LuaProfiler-For-Unity

安装流程

Lua profiler支持XLua,Slua, ToLua以及一个远程工具支持Windows,androidios真机调试

1.下载完成之后会看到LuaProfilerClientLuaProfilerServer两个文件夹,你需要两个Unity工程,将Client文件夹拷进你的游戏工程的Assets目录,也就是根目录下(如果你的Lua 脚本在Plugins 文件夹,把LuaProfilerClient拷到Plugins下)


2. 用Unity 5.6或者更新的Unity版本创建一个空的工程,把LuaProfilerServer 拷进根目录里。如果你的版本低于5, 请在启动游戏时加入如下代码

MikuLuaProfiler.HookLuaSetup.OnStartGame();

3.在你的游戏工程,也就是放了LuaProfilerClient的工程下,在Windows菜单拦下会多出一个Lua Profiler Window的选项。打开之后出现这个

如果你在PC上测试,就按照图中的设置即可

4.接下来打开LuaProfilerServer 所在的工程,该工程就是观测内存的地方。也在Window -> Lua Profiler Window下打开Lua Profiler窗口,端口和Client里配置的保持一致便可以点击OpenService


LuaProfiler:Lua内存优化工具教程

控制台出现如下log说明Server已经开始等待Client的连接


LuaProfiler:Lua内存优化工具教程

5.这时就可以启动你的游戏工程了,Client显示如下,Server的Lua profiler出现数据说明已经连接成功。


Android手机真机调试(usb连接方式)

用usb线连接电脑和手机
命令行里执行

adb reverse tcp:2333 tcp:2333

原理是把手机的本地端口 映射为pc的 端口
先在pc的server工程里 OpenSerive, 再打开手机APP


功能介绍

  • 参数说明

按照Lua Profiler从左到右的顺序逐一说明

  • totalLuaMemory:该函数及其子方法总共使用的lua内存(如果函数执行过程中发生了GC,此值会有略微不准)

  • self:该函数自身总共使用的lua内存,如果出现负值,是其子方法调用GC

  • totalMonoMemory:该函数及其调用总共使用的Mono内存(如果函数执行过程中发生了GC,此值会有略微不准)

  • self:该函数自身总共使用的mono内存,如果出现负值,是其子方法调用了GC

  • currentTime:在当前帧下此调用该函数所用时间

  • averageTime:该函数的平均调用时间

  • totalTime:该函数总共的耗时

  • LuaGC:在当前帧下该函数产生的Lua GC

  • MonoGC:在当前帧下该函数产生的Mono GC

  • totalCalls:从游戏开始时该函数的调用计数

  • Calls:当前帧下该函数调用的次数


录制模式

录制模式能对一段时间里的内存使用情况进行逐帧的监测

点击Record按钮,再点击StartRecord按钮进入录制模式。再次点击StartRecord按钮会结束录制,此时可以对内存情况进行逐帧的查看,很类似Unity的Profiler的操作。

结语

优化的重点关注几个地方,

  • 内存上涨的特别快的函数

  • 产生Lua GC的函数

  • 时长消耗比较长的函数,averageTime等指标


延伸阅读

zhihu.com/question/3070 工具作者ElPsyCongree写的关于性能检测文章

gamasutra.com/blogs/Wen C# for Unity内存管理的三篇文章

docs.unity3d.com/Manual Unity官网对内存管理的一些建议

免责声明:部分资源收集整理自网络,版权归原作者所有,仅作学习交流使用,不用于任何商业途径,如不慎该资源侵犯了您的权利,请麻烦通知我及时删除,谢谢。

以上是关于LuaProfiler:Lua内存优化工具教程的主要内容,如果未能解决你的问题,请参考以下文章

逻辑运算 — 白话Lua系列零基础教程 第四期

Android手机内存管理与性能优化视频教程下载

Lua与Unity的内存优化技术

Lua配置表内存优化

lua5.3gc卡顿

魔改TProto优化掉100MB的Lua内存