[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Optimising Elisp code
From: |
Barry Margolin |
Subject: |
Re: Optimising Elisp code |
Date: |
Fri, 05 Oct 2018 10:28:27 -0400 |
User-agent: |
MT-NewsWatcher/3.5.3b3 (Intel Mac OS X) |
In article <638fb7dc-6fc5-4645-8793-97a00038a3a8@googlegroups.com>,
Davin Pearson <davin.pearson@gmail.com> wrote:
> Suppose that you have a function:
>
> (defun foo ()
> (bar))
>
> And bar is a function that has no side effects and returns 123 then calling
> the function code-optimize (the name of my optimisation routine)
>
> M-x code-optimize on the function foo will result in the following defun
>
> (defun foo ()
> 123)
What you're describing is called inline expansion. AFAIK, the Elisp
compiler doesn't do this automatically.
You can define bar as a macro -- those HAVE to be expanded at compile
time, since that's how they work.
You can also define an inline function using defsubst. From the Elisp
manual:
An inline function works just like an ordinary function except for one
thing: when you compile a call to the function, the function's
definition is open-coded into the caller.
Making a function inline makes explicit calls run faster. But it also
has disadvantages. For one thing, it reduces flexibility; if you change
the definition of the function, calls already inlined still use the old
definition until you recompile them.
There are more caveats given in the documentation.
--
Barry Margolin, barmar@alum.mit.edu
Arlington, MA
*** PLEASE post questions in newsgroups, not directly to me ***
- Optimising Elisp code, Davin Pearson, 2018/10/04
- Re: Optimising Elisp code, Davin Pearson, 2018/10/04
- Re: Optimising Elisp code, tomas, 2018/10/05
- Re: Optimising Elisp code,
Barry Margolin <=
- Re: Optimising Elisp code, Emanuel Berg, 2018/10/05
- Re: Optimising Elisp code, Emanuel Berg, 2018/10/05
- Re: Optimising Elisp code, Óscar Fuentes, 2018/10/05
- Message not available
- Re: Optimising Elisp code, Emanuel Berg, 2018/10/05
- Re: Optimising Elisp code, Óscar Fuentes, 2018/10/05
- Message not available
- Re: Optimising Elisp code, Emanuel Berg, 2018/10/05
- Re: Optimising Elisp code, Emanuel Berg, 2018/10/05
- Re: Optimising Elisp code, Emanuel Berg, 2018/10/05
- Re: Optimising Elisp code, Emanuel Berg, 2018/10/05
- Re: Optimising Elisp code, Stefan Monnier, 2018/10/05