a seven
a seven
I found that after changing int to float, it was normal. Maybe I used luajit, and sol would have more float2int behavior. Even if luajit provided "lua_tointeger", sol would not...
或许可以利用luac 改造 ldump.c 使用lua原生的语法解析器, 将lua语法树数据提供给插件, c结构体占用内存更少, 解析器速度可以更快。
还有个办法就是 改成luajit, ast使用的 table 全部用 ffi + struct 来实现 这样也能降低内存 加快速度
前排
https://docs.qq.com/sheet/DTXRkdGlaaHZTalln?tab=BB08J2 py excel.py 之后 输入 这段url 就卡死了 正确的url是什么 这个链接是共享链接
我忽然发现为什么当年 小汐说lua的性能不如jass的原因了, 实在是因为ydlua引擎底层交互有问题 还有一些地方需要优化 1 每次访问 jass.common jass.japi 都会生成新的闭包 造成性能问题 2 调用 is_gaming() get_jass_thread() get_jass_vm() 等函数里 都 依赖了 get_war3_searcher() 里面的单例对象 单例对象使用静态局部变量 为了保证线程安全每次调用时都会从tls获取数据,高频率调用时会掉帧 3 lua调用native函数 是先将 参数 写入到容器里 再从 容器复制到栈里 一方面容器是堆内存...
我最近在重写替换jass虚拟机指令, 过程中用到你部分代码,反应出来性能比原本魔兽的要差一些,处理完上述问题,性能就达到相近的性能, 所以反馈一下而已。
你脱离作图1线 异步创建table 是很难避免的, 除非将所有异步的接口分离,单独一个虚拟机, 同步接口单独一个虚拟机, 否则一定存在异步创建table的情况的, 比如 message.hook 你自己就异步创建了table push给lua了。。。
总是会有这种需求的。 再者遍历 key=string是硬需求, 但是在编写过程中很容易疏忽 导致一个表里 不止是string 有可能存在其他的obj 这时候就异步了。 lua产生异步的概率还是非常高的
我知道, 但是在编写的过程中,很容易疏忽, 让一个表的key不完全是string ,而且一些新人入坑的 完全不知道这个问题,在编写完几万行代码后发现地图异步,几乎如同海底捞针。