From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: david@adboyd.com (J. David Boyd) Newsgroups: gmane.emacs.help Subject: Re: Speeding up Emacs load time Date: Wed, 24 Jul 2013 17:22:45 -0400 Message-ID: References: <86hafjwukz.fsf@somewhere.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1374700991 1340 80.91.229.3 (24 Jul 2013 21:23:11 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 24 Jul 2013 21:23:11 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Wed Jul 24 23:23:13 2013 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1V26Wf-0002Y1-0v for geh-help-gnu-emacs@m.gmane.org; Wed, 24 Jul 2013 23:23:13 +0200 Original-Received: from localhost ([::1]:36004 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V26We-00080L-J8 for geh-help-gnu-emacs@m.gmane.org; Wed, 24 Jul 2013 17:23:12 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:33149) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V26WQ-0007zt-QE for help-gnu-emacs@gnu.org; Wed, 24 Jul 2013 17:23:01 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V26WO-0006dx-0f for help-gnu-emacs@gnu.org; Wed, 24 Jul 2013 17:22:58 -0400 Original-Received: from plane.gmane.org ([80.91.229.3]:53101) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V26WN-0006do-QP for help-gnu-emacs@gnu.org; Wed, 24 Jul 2013 17:22:55 -0400 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1V26WM-00027h-1m for help-gnu-emacs@gnu.org; Wed, 24 Jul 2013 23:22:54 +0200 Original-Received: from 169.15.137.27 ([169.15.137.27]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 24 Jul 2013 23:22:54 +0200 Original-Received: from david by 169.15.137.27 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 24 Jul 2013 23:22:54 +0200 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 63 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: 169.15.137.27 User-Agent: Gnus/5.1299999999999999 (Gnus v5.13) Emacs/24.3 (cygwin) Cancel-Lock: sha1:s1oXwqBIZLWZCeohYjZIOLiU1A4= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.229.3 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:92374 Archived-At: "Sebastien Vauban" writes: > Hi Glyn and all, > > Glyn Millington wrote: >> One popular technique is not to load packages until you need 'em. That means >> fewer 'requires' in your .emacs/init.el file and more autoloads. >> >> See tips 3-5 here! >> >> http://a-nickels-worth.blogspot.co.uk/2007/11/effective-emacs.html >> >> The key function is eval-after-load > > I'm using GNU Emacs on Windows, and using the above, I could reduce my load > time from 10+ seconds to 3 seconds. Still 3 x over many of you, which report > sub-seconds load time. > > Though, I'm a bit blocked. I don't understand how to do better, or how to > completely avoid all the require commands. > > Just take a few exemple: > > - `(server-start)' takes more than 200 ms to run [1]; just that one command. > Though, I must have it in my .emacs file, right? > > - diff-mode-.el must be loaded before diff-mode; hence, I must have it at > startup. > > - Helm is my tool for opening files or switching between buffers. Just > requiring `helm-config' (almost only autoloads) -- hence, NOT `helm' (which > is more hungry in time) -- already takes 160 ms (as it still requires > `easy-menu' and `helm-aliases'). > > - `diary-lib' and co (needed for appointments notification) takes 233 ms. > Shouldn't I be notified at startup of events occurring in less than 15 > minutes, without having to make a first call to calendar or so? > > - `mic-paren' takes just 32 ms, but for just one small package, for which I > don't have a particular trigger. Is it `find-file-hook'? Then, I won't have > parenthesis highlighted when directly typing text in a newly created buffer > (or in the scratch). So, I need it in my .emacs. It's not eval'ed-after-load > of something else. > > - The same for YASnippet (loaded in 130 ms): what would be the trigger? > Unless I have a clear one, I must require it in my .emacs file. > > - Once again, the same with `recentf', which takes 92 ms. Don't I have to load > it right at startup? > > These are a couple of examples which take a lot of the time, and for which I > don't see a specific trigger that would allow me to defer their load to later. > > Any comments? > > Best regards, > Seb > > [1] The above are times on a very recent laptop i7, when on mains. Multiply > times by 3.5 when on battery. Are you using Cygwin? And the X11 binary, or the Ming-W binary?