减少垃圾回收加快Emacs的运行
根据网上的资料结合我自己的实验 增大gc-cons-threshold
的值可以加快Emacs的启动 方法是
1 | (setq gc-cons-threshold (* 50 1024 1024)) |
这个值控制了垃圾回收的频率 默认是800000 即每分配大约800K的内存就进行一次垃圾回收 有点频繁了 尤其对于现代的计算机 又尤其对于启动 所以我把它改成了50M 这样不仅启动时间从2.8s加快到了2.1s(加速25%) 感觉干其他工作也快了
是这样么 为什么不问问神奇的乌龟呢?
1 | (defun iterate (xx yy) |
用benchmark-run-compiled
测试一下这个代码 结果是
GC频率 | 用时/s | GC发生的次数 | GC用时/s |
---|---|---|---|
800K | 2.037 | 169 | 0.794 |
8M | 1.500 | 16 | 0.146 |
80M | 1.421 | 1 | 0.046 |
800M | 1.361 | 0 | 0 |
结论 通过减少垃圾回收能够获得大约25%的性能提升
2022-11-1 Update:
7年后,通过native-comp,上面这个测试用时2.7203e-05,快了10万倍吧。但下面的代码还是比C的版本慢几百倍。
Update:
1 | (defun f (v) |
这段代码可以测整数运算速度,和C相比Emacs Lisp慢100多倍。
或者您可以把评论发在别处,添加指向本页的连接,然后把网址告诉我:
本文标题:减少垃圾回收加快Emacs的运行
文章作者:Chris
发布时间:2015-11-12
最后更新:2022-11-01
原始链接:https://chriszheng.science/2015/11/12/Less-GC-for-better-performance/
版权声明:本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明出处!
分享