Question

Yesterday, I :q'd Vim to try Emacs for a while. I've started using Elisp (which is a hundred times better than VimScript), but even when I first installed it (via yum), and had changed nothing, it took about 30 seconds to start, and still does (both GUI and -nw).

I checked the *Messages* buffer:

Loading /usr/share/emacs/site-lisp/site-start.d/desktop-entry-mode-init.el (source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/rpmdev-init.el (source)...done

The files seem to be specific to the RPM package I installed. I tried changing their names, yet there was no difference. It still takes 30 seconds.

I've solved it partially by never exiting emacs (I only suspend it) and trying to do everything in it, but it would be nice to occasionally open two Emacs's, especially since I have a tendency to use my terminal emulator's split function rather than something like tmux.

I realized that Emacs would load slower than Vim, but this seems ridiculous for a fresh install. Has anybody got any idea what's going on?

Thanks!

Était-ce utile?

La solution

Emacs's PROBLEM file says:

*** Emacs startup on GNU/Linux systems (and possibly other systems) is slow.

This can happen if the system is misconfigured and Emacs can't get the
full qualified domain name, FQDN.  You should have your FQDN in the
/etc/hosts file, something like this:

127.0.0.1   localhost
129.187.137.82  nuc04.t30.physik.tu-muenchen.de nuc04

The way to set this up may vary on non-GNU systems.

This "slow startup" typically comes from a timeout, and 30s sounds about right.

As a side note: the DNS lookup that causes this slow down was considered important/useful back in the days where (almost) all machines had a static IP address. Nowadays the info gathered this way does not justify the effort, so starting with Emacs-25, Emacs does not perform this DNS lookup, so this problem should simply not exist any more.

Autres conseils

Okay, I have a (quirky and temporary) solution. I have to run dhclient em1 to access the internet, which makes Emacs take 30 seconds to load, probably because of some timeout. So, having already run dhclient em1, I use a shell script to launch Emacs that does the following:

sudo pkill dhclient
sudo ifconfig em1 down
emacs -nw -daemon 2> /dev/null
sudo ifconfig em1 up
sudo dhclient em1

That disables networking, launches Emacs as a daemon, and re-enables networking. It's ugly, but it works for now. If anybody else has a better answer, I'd be happy to hear it. Of course, em1 would have to be replaced by your Ethernet device (probably eth0, I guess).

I had a smilar problem with emacs taking about 15 seconds for startup. In my case the reason was a DNS timeout. For some reason, with my dormitory DNS, a failed reverse lookup (host 127.0.0.1) takes about 10 seconds. Replacing the DNS server by the google nameserver (8.8.8.8) produces an almost instant "not found: 3(NXDOMAIN)" response. At the same time, emacs's startup time went down to less than 2 seconds. Thanks @Stefan who pointed me into the direction of DNS problems.

Edit: adding the google nameserver as additional NS in Network Manager also does the job. (i.e. when your resolv.conf has the NSs in this order:

nameserver a.b.c.d
nameserver 8.8.8.8

)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top