EMACS-DOCUMENT

=============>集思广益

十倍提升Emacs性能

我对Emacs应用了如下的提速方法,然而还是对Emacs的性能不太满意:

  • 自动加载 packages
  • 延迟加载 packages
  • 编译 *.el 为 *.elc

经过一番探索, 我发现能够在1分钟内让我的Emacs提速10倍.

请注意,我说的可是运行性能,而不是启动速度哦.

解决方案其实很简单.

由于我用的是Linux,而且我的电脑也有足够多的内存(24G). 我完全可以将我的配置放到内存中去.

  1. 第一步, 将下行插入到 /etc/fstab 中,然后重启电脑:
tmpfs       /tmp        tmpfs       nodev,nosuid,size=8G    0   0
  1. 第二步,运行下面这段脚本(emacs2ram):
#!/bin/sh

if [ -z "$1" ];then
    echo "Usage:"
    echo "  emacs2ram start"
    echo "  emacs2ram restore"
    exit 1
fi

if [ "$1" == "start" ];then
    backup=emacs.d-backup
    link=.emacs.d
    volatile=/tmp/.emacs.d-$USER

    IFS=
    set -efu

    cd ~/

    if [ ! -r $volatile ]; then
        mkdir -m0700 $volatile
    fi

    # link -> volatie does not exist
    if [ "$(readlink $link)" != "$volatile" ]; then
        # backup project at first
        mv $link $backup
        # create the link
        ln -s $volatile $link
    fi

    if [ -e $link/.unpacked ]; then
        echo "Sync .emacs.d from memory to backup ..."
        rsync -avq --delete --exclude .unpacked ./$link/ ./$backup/
        echo "DONE!"
    else
        echo "Sync .emacs.d from disk to memory ..."
        rsync -avq ./$backup/ ./$link/
        touch $link/.unpacked
        echo "DONE!"
    fi
else
    echo "Moving .emacs.d back to disk ..."
    backup=$2-backup
    link=$2
    volatile=/tmp/$2-$USER
    cd ~/projs
    rm $link && mv $backup $link && rm -rf $volatile
    echo "DONE!"
fi

没了! 剩下的就像往常一样用Emacs就行了.

这段脚本最初是在列在ArchLinux Wiki上的. 我8年前就学会了这一招. 没想到我居然花了8年时间才真正用到了这一招.

另外, 我还用类似的脚本把所有的项目也放到内存中了.

UPDATE: 我把我的项目管理脚本在gist 上也公开了. 它跟emacs2ram几乎一样的.