搜索“emacs在windows启动慢”的问题可以看到很多人都说是由于windows创建进程慢引起的,我之前也是这样觉得。
但是因为用猫哥开发的几个插件,python-bridge, blink-search ,启动总会卡5秒左右。
我就详细分析了下python-bridge的实现,细节可以看这个贴子
windows上使用lsp-bridge存在卡顿的情况
可以看到从emacs开始执行代码,到启动一个进程,到那个进程执行发起网络请求,都是在1秒内,至少人是不可感知的。
最后定位问题到了另一个奇怪的地方,还没确定。但至少说明emacs在windows上的慢和windows进程启动速度无关。
最后想说有没有大佬熟悉这方面的帮忙看看卡顿的原因。
我用最新的29,不是日常用,尝鲜用,配置用了陈斌兄的,我觉得启动速度很快,显示0.65s,但是实际用了两三秒才能响应,archlinux和win7都试过,archlinux是i7 4810mq,win7是奔腾g4400,非要说的话archlinux上面快一点
是的,所以我加了“启动”两个字,毕竟emacs是移植到windows上的。
用mingw编译的程序包括msys2自带的pacman我都感觉比linux上慢多了。
设置了windows defender吗
之前我在windows 上打开emacs 需要十几秒,而且前几秒是没有任何窗口被打开的。
把emacs 添加到排除项之后就没这个问题了
只装了个关闭所有防护功能的火绒
而且我只有加载lsp-bridge这几个猫哥开发用到了外部python的插件才慢,要是不加这几个插件,秒开不卡
用 python-bridge 试了一下,我也卡,估计是 emacs 创建子线程的时候卡了
不过不太清楚是 tcp 连接的时候卡,还是进程创建整个都卡,我觉得应该是 network 连接的问题
Emacs Windows 版本是通过mingw/cygwin 库已知的,天生对于底层调用就有损耗,尤其是对于IO操作。小文件读写尤其明显。我认为问题不在Windows本身,可能是出在中间lib上。
今天看大佬的配置发现有 w32-use-native-image-API 这种东西。对于其他操作我感觉也可以这样改进。有时间研究下
嗯,可以看我发那个issue,很明确是网络连接的问题。python子进程1秒内就创建好并发起连接了。
不过看另一个帖子里面,有老哥提到在他的某台电脑上不卡,玄学
回家用自己电脑会卡,系统是 Windows11 专业版,公司的 Windows10 企业版不会卡,应该是网络连接问题,但是不知道是哪个设置负责的
这样看来,我感觉几个可能造成影响的地方
1 系统代理设置
2 某个环境变量和网络相关
3 代码内部对dns进行了解析,之前看文章有提到,emacs中网络相关的操作都是异步的,但是dns除外
大佬厉害了,应该就是 dns 的问题,把代码中出现 localhost 的地方改成 127.0.0.1 就不卡了,你可以试一下
可以的,解决了,不容易哇,
等猫哥把几个项目都修复下就爽了
说句题外话。 大佬六点钟起来改bug,真的佩服。
同样是 localhost 导致的问题,做个补充
需要把emacs放到哪个排除项里啊?我没找到windows defender哪里可以设置排除项?我的emacs在windows下第一次启动,最快也要快20s了。一直找不到原因。