随笔分类 -  lua

摘要:程序为单进程多线程 每个线程开启一个LuaJIT虚拟机,版本为LuaJIT 2.1.0-beta3 在高并发情况下,lua代码会出现诡异情况,例如: if true then if xxx == 1 then error("err") end else if xxx ~= 1 then error( 阅读全文
posted @ 2020-08-26 13:38 lcinx 阅读(918) 评论(0) 推荐(0)
摘要:转自https://www.cnblogs.com/cnxkey/articles/6808311.html luajit本身是没有问题的,但是在cocos项目中可能由于初始化内存无法分配导致有问题了,直接的证据就是jit.off()状态下比jit.on()状态下明显效率更高。 这里有篇文字对此进行 阅读全文
posted @ 2019-03-22 17:36 lcinx
摘要:转自http://www.cnblogs.com/zwywilliam/p/5999980.html luajit集成篇 大家都知道luajit比原生lua快,快在jit这三个字上。 但实际情况是,luajit的行为十分复杂。尤其jit并不是一个简单的把代码翻译成机器码的机制,背后有很多会影响性能的 阅读全文
posted @ 2019-03-22 17:33 lcinx
摘要:--[[ 说明 如下的数据,还原为二进制后 只要把数据用string.format到其他变量中,就会丢失 - 长度不同(字符串连接符..正常) 经测试 在如下版本中存在bug lua5.1.5 LuaJIT-2.0.4 在如下版本中正常 lua5.3.4 LuaJIT-2.1.0-beta3 ... 阅读全文
posted @ 2019-03-21 12:35 lcinx 阅读(689) 评论(0) 推荐(0)
摘要:问题: lua c api未提供获取lua函数到c的api,lua_tofunction获取的是c函数,而不是lua函数,故,用int类型作为lua函数的句柄,当需要调用lua函数时,在进行转换。三张表: 1、存 句柄 -> lua函数的映射 2、存 lua函数 -> 句柄的反向映射 3、存 句柄 阅读全文
posted @ 2019-03-21 12:20 lcinx 阅读(1616) 评论(0) 推荐(0)
摘要:热更新主要用于不停机修复bug等。故其重点是更新逻辑代码。切记模块设计时,分为数据和逻辑。1、所有脚本文件,除了入口的文件外,其他都写成module形式;2、模块中不要有文件内的local变量,目前未知此种变量存到哪里了,local修饰的函数无所谓;3、所有的数据部分直接存到_G.game_inst 阅读全文
posted @ 2019-03-21 12:15 lcinx 阅读(2843) 评论(0) 推荐(0)
摘要:所设置的hook函数的性能为主要热点。当纯lua写调试器时,此性能尤为重要。hook函数中,必须的一个判定是不能调试调试器自身,这样,要判定源文件,那么就需要用debug.getinfo函数,而此函数开销很大(涉及内存分配)。高效的做法是包装一个函数,获取指定stack level的文件名, 这样, 阅读全文
posted @ 2019-03-21 12:01 lcinx 阅读(385) 评论(0) 推荐(0)
摘要:环境: Lua5.1 LuaJIT-2.0.0-beta81、自有设施比对 不加jit时,比下lua的table 与 c/c++的哈希表性能。 然后换到luajit下,比较下,会发现lua的table性能确实很强悍。 测试时会有惊喜哦。2、造个轮子比对 同样的算法实现一个c的双向链表; 纯Lua也实 阅读全文
posted @ 2019-03-21 11:58 lcinx 阅读(1651) 评论(0) 推荐(0)