大家的 mode-line 的渲染耗时是多少,这个对流畅度体验影响大吗?

看来是我的机器性能不太好,所以我才一直在意用不用 icon 这个问题。。在我这里 doom-mode-line 是 1.5ms 的样子。我也是 Emacs 28 native-comp

我之前也一直对all-the-icons性能有怀疑,事实证明本身有缓存机制,性能还行,唯一影响的就是gc。把gc threshold 调大一点就没啥问题了。在dired中使用all-the-icons-dired,如果文件不上千,没感觉到多大延迟的。当然不用肯定是性能最好的,就看个人取舍。

BTW,我使用MacBook Pro 2015 13’ 和 2019 15’。

“0.000151s”

请问您用的什么字体和 theme 哈?

字体是更纱黑体中的Sarasa Mono Slab SC

主题是我个人在 doom themes 的基础上修改的、以中国传统颜色为主的主题 :smile:

all-the-icons 内部有缓存机制吗? 我看把icon disable后modeline format function的速度提升还是挺明显的

all-the-icons 用了memoize 库

1 个赞

你好, @seagle0128 我这个问题 [求助] 为什么这个插件会生成这么多timers? 会不会是 all-the-icons 的缓存造成的?

不确认,不过memoize中确实有timer使用。

跑个题,有什么办法可以在文件夹数量特别多的地方自动提前禁用 all-the-icons-dired 吗?我现在就只能以黑名单的方式,碰上一个加一个。

Centaur Emacs 里有这个实现:

1 个赞

能提供一段代码演示一下这个问题吗?我的好像没看到闪

(eval (progn
        (setq resize-mini-windows t)
        (setq mini-modeline-truncate-p nil)
        (run-at-time 0.3 nil (lambda () (message  "abc")))
        (run-at-time 0.6 nil (lambda () (message  "abcd")))
        (run-at-time 0.9 nil (lambda () (message  "abcde")))))

跑个提我,有没什么 mode line 配置推荐?现在用 doom mode line 有点看腻了。。。推荐个轻量的。。

我用他默认的配置就会有这样的问题。比如你按住下把光标拉到底部。message 会不断的输入 end of buffer,这个时候右边就会闪。

可以自己配,其实不会很复杂。

哇 好像你也用的i3

嗯嗯 不过这个不太影响使用

是啊,我是用 i3 的。

在我的r53500的本子上 emacs-pgtk doom-modeline 开启图标0.000894s 关闭图标0.000532s 很奇怪好像比楼上快很多,刚用没几天,暂时没感觉到过什么卡顿

刚发现我是手动安装的没有编译成elc,编译成elc现在是开启图标0.000504s关闭图标0.000472s

用楼主的方法测100000次的平均值是 0.000346,用的 doom-modeline

(defmacro +measure-time (&rest body)
  "Measure the time it takes to evaluate BODY."
  `(let ((time (current-time)))
     ,@body
     (float-time (time-since time))))

(let ((sum 0.0)
      (n 100000))
  (dotimes (x n)
    (setq sum (+ sum (+measure-time (format-mode-line mode-line-format)))))
  (message "%.06f" (/ sum n)))

但是感觉这项测试意义不大,因为都是在 scratch buffer (emacs lisp mode),我怀疑如果在项目目录下的其它mode比如python mode下测,数值会大很多。