[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: C and Emacs Lisp code parts
From: |
Karl Fogel |
Subject: |
Re: C and Emacs Lisp code parts |
Date: |
Fri, 01 Jul 2016 10:14:20 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) |
Andy Moreton <address@hidden> writes:
>> On 01.07.2016 11:25, Eli Zaretskii wrote:
>>>
>>> So yes, we need numbers to make rational decisions about this.
>>
>> Sorry, but that's irrational. Compare doesn't need numbers. To compare
>> implementations in C an exec is needed - which doesn't exist yet. If written,
>> the reason basically is gone, because C will be faster - unless something
>> went
>> wrong, which is a case for debugging rather than benchmarks.
>
>Eli is right. You believe that C is always faster, but most programmers'
>intuitions about performance are wrong. Benchmarks and numbers give a
>more objective basis for making rational design decisions.
Yes, Eli is exactly right, and is being completely rational.
Andreas, for example:
Suppose 100 functions have been converted from C to Lisp. Of those 100, say
that 3 are responsible for 95% of the slowdown that resulted (resulted from the
conversion of the group of 100, that is). Meanwhile, the other 97 are only
rarely called, or are never called in loops, whatever -- in other words, they
are not responsible for much slowdown.
If you convert all 100 functions back to C, then you lose the maintainability
advantages of having the innocent 97 in Lisp, for very little real gain; you
could have gotten almost all the gain from just identifying the 3 important
functions and converting only them.
That's why Eli's point about profiling first, and basing any decisions on the
results, is so important.
The adage "C is faster" is not always correct in any case, as others here have
pointed out. But what I'm saying above is that, even if it *were* always true,
it would still not be an argument for converting lots of functions back to C,
or for avoiding converting more functions from C to Lisp. You have to know
*which* ones need to be in C. Manual testing can maybe identify a few of
those, and if you can perform such tests and identify some such functions, that
would be great. An even more general way to do it (with correspondingly
greater up-front investment, of course) is a performance test suite.
But to just recommend that Emacs stop moving things from C to Lisp, or move
things back to C, without knowing *which* things and why, is to make a
recommendation too vague to guide anyone's actions.
Best regards,
-Karl
- Re: C and Emacs Lisp code parts, (continued)
- Re: C and Emacs Lisp code parts, John Wiegley, 2016/07/05
- Re: C and Emacs Lisp code parts, Andreas Röhler, 2016/07/06
- Re: C and Emacs Lisp code parts, Andreas Röhler, 2016/07/06
- Re: C and Emacs Lisp code parts, Phillip Lord, 2016/07/06
- Re: C and Emacs Lisp code parts, John Wiegley, 2016/07/01
- Re: C and Emacs Lisp code parts, Andreas Röhler, 2016/07/01
- Re: C and Emacs Lisp code parts, Eli Zaretskii, 2016/07/01
- Re: C and Emacs Lisp code parts, Andreas Röhler, 2016/07/01
- Re: C and Emacs Lisp code parts, Eli Zaretskii, 2016/07/01
- Re: C and Emacs Lisp code parts, Andy Moreton, 2016/07/01
- Re: C and Emacs Lisp code parts,
Karl Fogel <=
- Re: C and Emacs Lisp code parts, Andreas Röhler, 2016/07/01
- Re: C and Emacs Lisp code parts, Eli Zaretskii, 2016/07/01
- Re: C and Emacs Lisp code parts, Andreas Röhler, 2016/07/01
- Re: C and Emacs Lisp code parts, Eli Zaretskii, 2016/07/01
- Re: C and Emacs Lisp code parts, Fabrice Popineau, 2016/07/02
- Re: C and Emacs Lisp code parts, Eli Zaretskii, 2016/07/02
- Re: C and Emacs Lisp code parts, Alan Mackenzie, 2016/07/01
- Re: C and Emacs Lisp code parts, Andreas Röhler, 2016/07/01
- Re: C and Emacs Lisp code parts, Alan Mackenzie, 2016/07/01
- Re: C and Emacs Lisp code parts, Andreas Röhler, 2016/07/01