LuaProfiler:Lua内存优化工具教程 admin 2023-05-18 11:15:02 篇首语:本文由小编为大家整理,主要介绍了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,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连接方式) 用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内存优化工具教程的主要内容,如果未能解决你的问题,请参考以下文章 使用uVision ARM编译器的未知操作码'CBZ' OpenCV-中值滤波cv::medianBlur 您可能还会对下面的文章感兴趣: 相关文章 浏览器打不开网址提示“ERR_CONNECTION_TIMED_OUT”错误代码的解决方法 如何安装ocx控件 VMware的虚拟机为啥ip地址老是自动变化 vbyone和EDP区别 linux/debian到底怎么重启和关机 苹果平板键盘被弄到上方去了,如何调回正常? 机器学习常用距离度量 如何查看kindle型号