请教下Emacs的性能提升问题

最近闲的蛋疼想试试性能优化
究其原因,发现用 IDEA 编程还是不错的,又不想全面转到他上面去工作,也不想转到 Doom 或者其他的配置,只想在自己的配置上不断改进,优化
我就是这么一个忠贞不二的人,可惜现在还是单身 :yum:


查看相关 “优化” 帖子的时候,注意到一些词语,

  1. 生成本机代码
  2. 编译 el 文件
  3. gccemacs
  4. 垃圾回收
    不知道有哪位能提供下具体的优化方案和建议,这些帖子里就知识一笔带过,激不起兴趣

最好的优化方式是针对每个项目单独配置 emacs (不过大家应该不会这样做

日常用着卡,一般是要不是GC卡,要不是 format-mode-line 卡,要不是某些 timer 一直在跑

于是,要优化就顺着 profile report 改呗。用一段时间后,发现某个占用了大量CPU,就关掉之类的x

2 个赞

还可能是一些常用hook被挂上了一些优化比较糟糕的函数

不挂在 pre-command-hook 一类就还好x

(犹记前面 savehist 不断创建新temp buffer,然后因为不进行GC,导致内存溢出

savehist 现在还有问题吗?我刚刚启用了它。

偶尔碰到退出时,卡在写入recentf 文件,只能强制关闭

session.el可以保存所有全局变量。也没有性能问题。

1 个赞

可能不太行,這个 with-temp-buffer 不改成固定 buffer,估計會一直有這个問題

Screen Shot 2021-06-27 at 11.04.31 PM


這是前不久一次 profile

大概是甚麼也不做,閒置了1小時(當時發現了內存溢出

1 个赞

我用的这个配置,用起来还行。

(use-package savehist
  :ensure nil
  :hook (after-init . savehist-mode)
  :init (setq enable-recursive-minibuffers t ; Allow commands in minibuffers
              history-length 1000
              savehist-additional-variables '(mark-ring
                                              global-mark-ring
                                              search-ring
                                              regexp-search-ring
                                              extended-command-history)
              savehist-autosave-interval 300))

先给一个建议,用gccemacs版本效果立竿见影,不过得忍受编译和插件安装后CPU飙升的问题。另外,目前最新版不能运行,会报这个错。

emacs: can't find function "F6d656e752d6261722d7570646174652d62756666657273_menu_bar_update_buffers_0

还请麻烦你 link 一下 profile 的教程,另外有必要将配置文件编译吗

@seagle0128 还请详细说明一下,CPU飙升为什么会引起

要compile啊

那这个飙升在运行时会发生吗?

也就第一次运行你安装的软件或者包的时候会编译。没什么大的影响。建议安装试试看。

还有个小问题,我想把gccemacs和原来的版本分开安装,有没有什么解决办法

不知道你是什么操作系统?我在Mac 下是直接通过 brew 安装:

brew install emacs-plus@28 --with-native-comp

应该是可以安装多个不同版本的,就是的app目录下软链接的的名字要改一下,不然会重名。

ubuntu 诶

Ubuntu 我不熟悉唉,等其他大佬来解决了。
我主要使用的 Arch Linux , Windows 10 和 Mac。
其实装了native-comp 以后基本不会用老版本了。反正我是基本没开过😄,虽然在Mac 和 Windows都装了 27.2.

PS:Ubuntu 安装 native-comp 有点麻烦,需要自己编译,而且Ubuntu上的Gcc版本比较老。反正我是没成功过。还是Arch 系方便,一条命令就可以安装了。

害,这个emacs源码下载太艰辛了,1个多G,下好了跟我说 libgccjit 找不到,查了网络又要加仓库
累 skr 人,我还是不去作死了