LuaProfiler:Lua内存优化工具教程

前言

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

下载链接

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

安装流程

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

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

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

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

 

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

打包的时候ip地址填入 127.0.0.1 port:填入2333
在Player Settings里加上宏:USE_LUA_PROFILER
注意:不要编译 lua代码。

用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等指标

本文只是入门教程,我觉得已经足以解决很多基础的内存问题。如果有更多的问题,可以加QQ群:882425563 一起讨论

 

延伸阅读

https://www.zhihu.com/question/307064711/answer/570257565  工具作者ElPsyCongree写的关于性能检测文章

http://www.gamasutra.com/blogs/WendelinReich/20131109/203841/C_Memory_Management_for_Unity_Developers_part_1_of_3.php   C# for Unity内存管理的三篇文章

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值