最萌小汐
最萌小汐
我加入了一个实验性的功能,可以将未打开的文件的语法树生成到硬盘上而不是内存中,经测试这可以节省大约一半的内存,但是代价是初始化工作目录需要花费较长的时间,我的电脑上测试下来1秒只能编译20个文件。 启用方法是在启动参数中加入 `--lazy` (VSCode设置为 `misc.parameters`)。 另外如果你不需要的话可以关闭工作区诊断(将 `diagnostics.workspaceDelay` 设置为 -1),这也可以节省一半以上的内存。
> 或许可以利用luac 改造 ldump.c 使用lua原生的语法解析器, 将lua语法树数据提供给插件, c结构体占用内存更少, 解析器速度可以更快。 不可能使用原生的,要做也把LuaParser用C重写一遍。两边生成的语法树结构完全不一样。
> 还有个办法就是 改成luajit, ast使用的 table 全部用 ffi + struct 来实现 这样也能降低内存 加快速度 你这个目的是和重新设计结构一样的,我自己设计一个压缩格式用字节流一样能实现。 LuaJIT一方面我是用的运行时不支持,另一方面JIT本来就是用空间换时间的方案,占用的内存理论上会更多。
3.5.4或3.6.0吧。 你可以先从ci里下载最新的版本尝试一下:https://github.com/sumneko/lua-language-server/actions/runs/2977600473 解压覆盖本地的插件文件即可
> 谢谢, 内存确实少了快一半, 就是解析速度有点慢 嗯,所以实用性不高,除非我继续搞个持久性缓存,可以复用你上次启动语言服务时的本地缓存,这样就只有第一次要解析这么久。不过我还是觉得这么复杂的方案换这么点内存不值得,建议你联系你公司的IT帮你加根内存条。
Correctness is guaranteed by the user.
传入的参数还不支持从函数参数与返回值中分析泛型
resolved with #1153
不知道怎么复现,来点截图或视频或更详细的描述
依然复现不了,这是打开项目后第一次诊断发生的,还是每次工作区诊断都会发生?