emacs在windows上启动慢真的是进程启动慢造成的吗

只装了个关闭所有防护功能的火绒

而且我只有加载lsp-bridge这几个猫哥开发用到了外部python的插件才慢,要是不加这几个插件,秒开不卡 :rofl:

用 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除外

好像发现点问题,用wireshark抓包看了下,存在chong重用端口的情况,感觉应该是lsp-bridge的代码哪个地方有点问题,导致端口号重复了,反复启动

3 个赞

大佬厉害了,应该就是 dns 的问题,把代码中出现 localhost 的地方改成 127.0.0.1 就不卡了,你可以试一下

3 个赞

可以的,解决了,不容易哇, :hugs:

等猫哥把几个项目都修复下就爽了

3 个赞

已经修复, 感谢 @junmoxiao @xhcoding 两位大佬的调试。

@xhcoding 是我一票插件 Windows 分支代码的维护者之一, 还是大佬厉害👍

大佬厉害,我原来在emas org-mode中显示某个域名返回的org文本也感觉很慢,后来域名没了,没办法只能用ip ,反倒快了很多,导致我都不想用域名了,原来dns这一步还会卡emacs

1 个赞

说句题外话。 大佬六点钟起来改bug,真的佩服。

同样是 localhost 导致的问题,做个补充

需要把emacs放到哪个排除项里啊?我没找到windows defender哪里可以设置排除项?我的emacs在windows下第一次启动,最快也要快20s了。一直找不到原因。

肯定不正常,在windows上我现在1秒启动,而且马上能用
我的配置 GitHub - heheda123123/emacs.d 用的git上最新commit的emacs
杀软用的火绒,
defender的话,好像叫排除项 还是白名单,可以从设置里面安全中心进去

image

image

添加 emacs 所在目录到这个排除列表里就行了,我直接把整个 D 盘加进去了,emacs 就在 D 盘里

添加应用 emacs.exe 应该也行

找到了,谢谢;

写了个总结, Windows 下在 emacs 中使用 localhost 导致的连接创建卡顿以及解决方法

  • 直接原因是 Windows 10 中 loaclhost 首先被解析为 ::1 ,随后才轮到 127.0.0.1 ,这使得 127.0.0.1 需要在 ::1 经过几次失败尝试后才被使用
  • 如果服务端支持双栈(dual stack),使用 localhost 是可以的,但一般的本地程序可能不会考虑到这一点
1 个赞