Article View: gnu.emacs.help
Article #188888Re: EVAL-WHEN in emacs
From: Jamie Zawinski
Date: Sat, 08 Jun 1991 14:35
Date: Sat, 08 Jun 1991 14:35
37 lines
2635 bytes
2635 bytes
In article <TIM.91Jun8191942@kahlo.cstr.ed.ac.uk> tim@cstr.ed.ac.uk (Tim Bradshaw) wrote: > > Also: I've seen at least 2 new byte-compilers discussed recently: > which is the best (or are either of them better than the original?)? The first is one hacked up by Hallvard Furuseth and Dale Worley, which is slightly faster than the standard bytecomp; the primary speedup is in load-time for some packages (like gnus) because it compiles more forms than the standard bytecomp does, and merges some adjascent top-level forms into one call to byte-code. Also, it doesn't compile trivially small functions which would run faster interpreted. Someone once made a post claiming that this sped up gnus by 50%, and this has been repeated several times, but it's just not true. The version of bytecomp that is in emacs19 is roughly the same as this one. I have my own version of the byte compiler (which Hallvard has helped with a lot) which does the above and much more, including removal of unreachable code, removal of calls to known side-effectless functions whose return value is not used, compile-time evaluation of known constant forms (like (ash 1 6), etc), open-coding of literal lambda expressions, peephole optimization of emitted code, and support for inline functions (defsubsts). It also produces compile-time warning messages for mismatched calls and arglists, macros being used before they are defined, and various syntax errors. It's not done yet. It hasn't been tested thoroughly, and I haven't done any timings, but it reduces code size by 10-20%. I'll post it when it's ready. (This might not be for a while, though, due to my rapidly diminishing free time...) I don't know how much it will speed up existing code, but I have found that making use of the inline function facility can easilly speed things up by an order of magnitude. Elisp function calls are a lot more expensive that you might think. -- Jamie
Technical Details
Message-ID:
<JWZ.91Jun8163507@thalidomide.lucid.com>Path:
arc1-ca.pugleaf.net!gmdzi!unido!mcsun!uunet!stanford.edu!lucid.com!karoshi!jwzReferences:
<TIM.91Jun8191942@kahlo.cstr.ed.ac.uk>Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103b8b,7d5674bc01ffe4e7 X-Google-Attributes: gid103b8b,public X-Google-ArrivalTime: 1991-06-09 03:47:19 PST Path: arc1-ca.pugleaf.net!gmdzi!unido!mcsun!uunet!stanford.edu!lucid.com!karoshi!jwz From: jwz@lucid.com (Jamie Zawinski) Newsgroups: gnu.emacs.help Subject: Re: EVAL-WHEN in emacs Message-ID: <JWZ.91Jun8163507@thalidomide.lucid.com> Date: 8 Jun 91 14:35:07 GMT References: <TIM.91Jun8191942@kahlo.cstr.ed.ac.uk> Sender: usenet@lucid.com Organization: Lucid, Inc., Menlo Park, CA Lines: 37 In-Reply-To: tim@cstr.ed.ac.uk's message of 8 Jun 91 18:19:42 GMT X-Windows: The Cutting Edge of Obsolescence.