美文网首页更好的lua代码
正则表达式优化Lua代码

正则表达式优化Lua代码

作者: 塘朗山小钻风 | 来源:发表于2019-07-15 21:24 被阅读0次

无GC结构体:

xlua已经对这些优化过

在Xlua中生成的PackUnpack.cs中可以看到这些结构体在Lua和C#中传递是用的是字节缓冲区。并不需要生成Object。所以无GC。

但是在Lua中却经常会写

local v = Vector3(1, 2, 3)

这个会调用中UnityEngineVector3Wrap.cs的Utils.BeginClassRegister(type, L, __CreateInstance, 25, 10, 0);中的__CreateInstance创建实例。

不用创建实例写法是local v = {x = 1, y = 2, z = 3}这样的。

VS Code中统一修改:在查找替换窗口这样输入

用正则表达式来优化结构体

在查找项捕获三个数据。捕获项([^(),]+)是为了避免Vector3(1, x(2, 3), 4)这样的数据项:中间某些是函数值。这样的情况在完成上面的替换后有针对性地来修改这样的特殊数据(项目中不会很多的)。

别的结构体依此类推。

过多的字符串拼接

查找模式如下

匹配三个字符串拼接。

(.*?)((?:".+?")|(?:[\]\[\w\d_.]+?)) *\.\. *((?:".+?")|(?:[\]\[\w\d_.]+?)) *\.\. *((?:".+")|(?:[\]\[\w\d_.]+))(?<!\.)(.*)

((?:".+?")|(?:[\]\[\w\d_.]+?))这个是匹配 "" 中的字符串或变量值。不怕麻烦的话也可以支持 '' 单引号中字符串:((?:["'].+?['"])|(?:[\]\[\w\d_.]+?))

local a = "xx"

local b = {x = "yy"}

str = "aa" .. a .. b.x .. "x"

替换模式如下:

local _concat_ = {$2, $3, $4}\n$1table.concat(_concat_ , '')$5

这样一行变两行

local _concat_ = {"aa",  a, b.x}

str = table.concat(_concat_ , '').. "x"

后发断言(?<!\.)就是为了不让$4匹配 .. "x" 中的两个点。

也可以依此类推8个字符串拼接的那种:

原来的字符串:

            str = str..rep("\t", level + 1).."["..rep("\"", k_is_str)..(tostring(k) or type(k))..rep("\"", k_is_str).."]".." = "

变成了:

local _concat_ = {str, rep("\t", level + 1), "[", rep("\"", k_is_str), (tostring(k) or type(k)), rep("\"", k_is_str), "]", " = "}

            str = table.concat(_concat_ , '')

避免table的rehash

待续

神奇的是这些都可以在vs code中完成。非常快的处理上千个文件

相关文章

  • 正则表达式优化Lua代码

    无GC结构体: 在Xlua中生成的PackUnpack.cs中可以看到这些结构体在Lua和C#中传递是用的是字节缓...

  • Lua代码优化笔记

    最近正好在重构公司客户端的代码,讲以前残留的C#脚本都从逻辑中剔除然后用Lua脚本实现以方便日后热更需求。重构完之...

  • lua进阶

    lua官网在线运行代码 table面向对象语法糖 lua对table中的函数调用做了优化,使用起来像类方法,增加了...

  • C语言调用Lua脚本并传入结构体

    直接看代码,代码中有相关注释。 c-lua-struct.c fun.lua 编译命令 gcc c-lua-str...

  • Nginx + lua 限流

    Lua 代码: Nginx

  • C++调用lua方式

    目标 使用C++调用lua接口 示例 lua代码(test.lua) C++调用示例(lua_test.cpp) ...

  • lua解释器(变量以及表)

    本篇主要来结合着lua的代码,配合lua源码来阅读lua的汇编代码,具体反汇编工具可以用ChunkSpy这个工具,...

  • Redis + lua 限流

    lua脚本 java 代码:

  • 测试是否能正常写代码

    lua代码 没有lua代码的语法 c++代码 c++代码正常 其他的暂时就不一 一测试了。先到这吧

  • Lua优化

    1、table缓存或裁剪,减少频繁创建销毁导致的GC: (1)TableTool; (2)UIList虚列表缓存条...

网友评论

    本文标题:正则表达式优化Lua代码

    本文链接:https://www.haomeiwen.com/subject/tzpnkctx.html