Subject: Re: bug#69480: Emacs Lisp needs, for its great 'native-compile', 'declare' and 'the' for fixnums and arrays.

From: Robert Boyer <[email-masked]>
Date: Thu, 29 Feb 2024 14:54:46 -0600

> You use benchmark incorrectly.

Huh?  Here is the documentation.

benchmark is an interactive native-compiled Lisp function in ‘benchmark.el’.

(benchmark REPETITIONS FORM)

Print the time taken for REPETITIONS executions of FORM.
Interactively, REPETITIONS is taken from the prefix arg, and
the command prompts for the form to benchmark.
For non-interactive use see also ‘benchmark-run’ and
‘benchmark-run-compiled’.
FORM can also be a function in which case we measure the time it takes
to call it without any argument.

  Probably introduced at or before Emacs version 22.1.

 > And you should use benchmark-run instead, anyway.

Thanks for that.  I'll give it a try.

>  It takes 16.7 sec on my system.

All of my times come from using a $100 Lenovo Chromebook.  How much did
your machine
cost?

> Emacs Lisp will never be able to produce performance similar to SBCL, not
the way
> native compilation implemented in Emacs.

Wanna bet?  There are too many geniuses working on Emacs to let this chance
for 8X pass.

Thanks for your reply.  My message was inspired by something someone said
when I sent
in a much simpler demo of the same 8x point, saying that one needed to show
the difference  on
real code.  So I have done so, I hope everyone agrees. Who is more famous
than Eratosthenese?

Bob

On Thu, Feb 29, 2024 at 2:11 PM Eli Zaretskii <[email-masked]> wrote:

> > From: Robert Boyer <[email-masked]>
> > Date: Thu, 29 Feb 2024 13:40:14 -0600
> >
> > Consider this form:
> >
> > (progn (emacs-lisp-native-compile-and-load) (benchmark (build-sieve
> (expt 10 8)) 1))
> >
> > First of all, 'benchmark' has an obvious bug because it reports a time of
> > .000005 seconds.
>
> You use benchmark incorrectly.  And you should use benchmark-run
> instead, anyway.
>
> > After finding the file eratosthenese.el, the evaluation of the form above
> > takes 69 seconds in Emacs.
> >
> > After entering SBCL and loading eratosthenese.lisp, (build-sieve (expt
> 10 8))
> > takes 8 seconds.
>
> It takes 16.7 sec on my system.
>
> I see no bug here, native-compiled Emacs Lisp will never be able to
> produce performance similar to SBCL, not the way native compilation is
> implemented in Emacs.
>