Emacs日常 2021/4/30
Posted Random Tech Notes
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Emacs日常 2021/4/30相关的知识,希望对你有一定的参考价值。
分享一些Emacs的新闻和经验。
42倍性能提升!Emacs 28将支持Emacs-Lisp原生编译!
Emacs内部使用的脚本语言Emacs-Lisp(elisp)目前仍然是解释执行或编译成bytecode执行,这使得Emacs在运行扩展脚本的时候速度较慢。
Corallo, Nassi, Manca等利用libgccjit,将elisp脚本编译成机器原生代码,在使用的时候动态加载运行。在测试中,原生编译的elisp包,运行速度较现有的解释/bytecode执行有2.3倍到42倍的提升!
目前elisp原生编译的代码已经合入Emacs master库,预计将出现在28.1版本中(今年晚些时候发布)。
相关论文:https://arxiv.org/abs/2004.02504
Emacs Garbage Collection设置
Emacs默认的GC阈值比较保守,如果电脑内存足够的话,其实可以把它设大一点。此外,在minibuffer里交互的时候,也可以把GC暂时关掉,以免影响交互的流畅度。
;; 增加GC阈值到10MB,如果觉得太低可以再加大
(setq gc-cons-threshold (* 1024 1024 10))
;; 进入minibuffer的时候关闭GC
(defun my-minibuffer-setup-hook ()
(setq gc-cons-threshold most-positive-fixnum))
;; 退出minibuffer的时候重新打开GC
(defun my-minibuffer-exit-hook ()
(setq gc-cons-threshold (* 1024 1024 10)))
;; 挂上minibuffer的钩子
(add-hook 'minibuffer-setup-hook #'my-minibuffer-setup-hook)
(add-hook 'minibuffer-exit-hook #'my-minibuffer-exit-hook)
至于效果?我暂时还没看出来…… :-)
以上是关于Emacs日常 2021/4/30的主要内容,如果未能解决你的问题,请参考以下文章