对于lua内存优化我自己的一点看法。
1.table hash 部分 key 也是要占用内存的 除开字符串 -其他类型做key 消耗其实差不多
其中 booean 应该是最小的 ,字符串有些人习惯字符串key写多长,我估计没有注意到
字符串key 就算没有[""] 这种使用其实还不是会在第一次创建一个gc对象(当然越长越大)
当然为了可读性无可厚非,但是不是写得长可读性就高。
2.关于打表空间换时间
宁可用2000行代码计算最终结果,也不愿意用 5000 个元素结果的 非嵌套)has配置表来实现.
首先未必使用代码计算就会省下这个内存,实际上2000行远比5000个元素的hash表消耗的内存小
你的函数+变量名 如果是不重复的在lua里面应该是要产生 字符串的gc对象的 只是lua对短字符串做了缓存处理,但是代码里面一般 大部分都是不重复的命名。
对于变量名的是否产生字符串gc具体我只是猜测,毕竟没看懂源码。
在合适的情况下用hash表不仅让代码更加简洁,同时也更加高效简单。
当你没有亲自做一件事情的时候你可能无法完全理解别人的全部想法,不一定别人就是错的。
反之亦然。
3.对于工作项目使用excel 表转lua配置表。
对于这一点我无力吐槽了,简直是在浪费lua的特性,让lua 丧失了灵活,让工作更加繁琐。
使用excel 表大概是为了策划方便使用(可以使用各种公式,不用了解lua table 和基础类型),但是我认为没有必要。
1.配置变的死板。
2.增加了工作量
3.版本工具不好对比差异
4.建议条件允许的情况下使用 emmylua 注释插件
每个注释方法都很有用(
---@class:申明一个类 :基础的基类 .会有提示 :虽然只支持单继承
---@typef:表明一个类型 .告诉你什么类型(
---@field:class 字段 .申明字段类型
---@see:object#method .匿名调用
---@alias aliasName originName .类型别名 类似 c typedef
---@generic 泛型
---@overload 重载
emmylua 注释主要有2个 作用
1让看代码的人轻易知道数据类型(阅读别人的代码首先就是要搞清楚数据内容 ,虽然老一套的注释方法{--[[字段名 = 描述]]} 这种方法也可以但是有一定局限性,其他地方引用的地方并不容易知道它是哪里来的,而使用emmylua 可以使用 ---@class + ---@type 就可以表明引用关系
1.注释提示 2.查找引用关系 vscode 选中 Shift+F12 很有用,你看别人代码的时候
看 :ctor 这个对象的依赖关系很快找到哪里在创建对象 lua一般 实现面向对象都是 class.new 然后最后会调用到ctor 可以 使用---@see class#ctor 声明隐式调用的依赖关系,
在修改代码的时候也很有用,一般之前都是 shift + f 全局搜索 你可以直接 shift + F12 查找
依赖的位置。
之前没有用emmylua 看别人代码,感觉很恼火现在,一般使用emmylua 一边注释一边看,就算中途忘记了,还可以根据写好的注释,查找依赖关系,搞清楚依赖的关系,可方便跳转,和table 数据内容。对于看不懂的代码,也写注释,在写的过程中也就了解了数据结果,然后根据依赖查找也提高了代码阅读的效率。