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.下载完成之后会看到LuaProfilerClient和LuaProfilerServer两个文件夹,你需要两个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官网对内存管理的一些建议
————————————————
版权声明:本文为CSDN博主「大龄美飘」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wanna_ku/article/details/87535606

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值