all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Andrea Corallo <acorallo@gnu.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: pipcet@protonmail.com,  stefankangas@gmail.com,
	 mattiase@acm.org, eggert@cs.ucla.edu,  emacs-devel@gnu.org
Subject: Re: New "make benchmark" target
Date: Mon, 06 Jan 2025 13:41:55 -0500	[thread overview]
Message-ID: <yp14j2b6az0.fsf@fencepost.gnu.org> (raw)
In-Reply-To: <86ikqs57bc.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 06 Jan 2025 16:46:15 +0200")

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Andrea Corallo <acorallo@gnu.org>
>> Cc: Eli Zaretskii <eliz@gnu.org>,  stefankangas@gmail.com,
>>   mattiase@acm.org,  eggert@cs.ucla.edu,  emacs-devel@gnu.org
>> Date: Mon, 06 Jan 2025 06:23:22 -0500
>> 
>> Pip Cet <pipcet@protonmail.com> writes:
>> 
>> > In particular, as you (Andrea) correctly pointed out, it is sometimes
>> > appropriate to use an average run time (or, non-equivalently, an average
>> > speed) for reporting test results; the assumptions needed for this are
>> > very significant and need to be spelled out explicitly.  The vast
>> > majority of "make benchmark" uses which I think should happen cannot
>> > meet these stringent requirements.
>> >
>> > To put things simply, it is better to discard outliers (test runs which
>> > take significantly longer than the rest).  Averaging doesn't do that: it
>> > simply ruins your entire test run if there is a significant outlier.
>> > IOW, running the benchmarks with a large repetition count is very likely
>> > to result in useful data being discarded, and a useless result.
>> 
>> As mentioned, I disagree with having some logic put in place to
>> arbitrarily decide which value is worth to be considered and which value
>> should be discarded.  If a system is producing noisy measures this has
>> to be reported as error of the measure.  Those numbers are there for
>> some real reason and have to be accounted.
>
> Without too deep understanding of the underlying issue: IME, if some
> sample can include outliers, it is always better to use robust
> estimators, rather than attempt to detect and discard outliers.
> That's because detection of outliers can decide that a valid
> measurement is an outlier, and then the estimation becomes biased.

100% agreed

> In practical terms, for estimating the mean, I can suggest to use the
> sample median instead of the sample average.  The median is very
> robust to outliers, and only slightly less efficient (i.e., converges
> a bit slower) than the sample average.

For my experience benchmarks typically use geo-mean, there's quite some
info around on why is that, ex [1].  The use of arithmetic mean in
elisp-benchmarks is an error of youth (I'm responsible of) which I think
should be fixed.

  Andrea

[1] <https://dl.acm.org/doi/pdf/10.1145/5666.5673>



  reply	other threads:[~2025-01-06 18:41 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-11 22:37 Improving EQ Pip Cet via Emacs development discussions.
2024-12-12  6:36 ` Eli Zaretskii
2024-12-12  8:23   ` Andrea Corallo
2024-12-12  8:36   ` Pip Cet via Emacs development discussions.
2024-12-12  9:18     ` Eli Zaretskii
2024-12-12  9:35     ` Visuwesh
2024-12-12 10:40     ` Andrea Corallo
2024-12-12 17:46       ` Pip Cet via Emacs development discussions.
2024-12-12 19:09         ` Eli Zaretskii
2024-12-12 10:53     ` New "make benchmark" target Stefan Kangas
2024-12-12 10:59       ` Andrea Corallo
2024-12-12 16:53         ` Pip Cet via Emacs development discussions.
2024-12-13  0:49           ` Stefan Kangas
2024-12-13  7:37             ` Andrea Corallo
2024-12-14 12:00               ` Stefan Kangas
2024-12-14 14:06                 ` Stefan Monnier
2024-12-14 11:34             ` Pip Cet via Emacs development discussions.
2024-12-14 11:58               ` Stefan Kangas
2024-12-14 20:07                 ` Pip Cet via Emacs development discussions.
2024-12-14 20:20                   ` João Távora
2024-12-15  0:57                   ` Stefan Kangas
2024-12-22 16:04                     ` Pip Cet via Emacs development discussions.
2024-12-29 10:47                       ` Andrea Corallo
2024-12-30 11:45                         ` Pip Cet via Emacs development discussions.
2024-12-30 14:15                           ` Eli Zaretskii
2024-12-30 15:00                             ` Pip Cet via Emacs development discussions.
2024-12-30 15:21                               ` Eli Zaretskii
2024-12-30 15:49                                 ` Pip Cet via Emacs development discussions.
2024-12-30 15:53                                   ` João Távora
2024-12-30 16:40                                   ` Eli Zaretskii
2024-12-30 17:25                                     ` Pip Cet via Emacs development discussions.
2024-12-30 18:16                                       ` Eli Zaretskii
2024-12-31  4:00                                         ` Pip Cet via Emacs development discussions.
2024-12-31  5:26                                           ` Stefan Kangas
2024-12-31 13:05                                             ` Eli Zaretskii
2024-12-31 14:14                                               ` Pip Cet via Emacs development discussions.
2024-12-31 14:22                                                 ` Eli Zaretskii
2024-12-31 12:53                                           ` Eli Zaretskii
2024-12-31 14:34                                             ` Andrea Corallo
2024-12-30 18:26                                       ` Andrea Corallo
2024-12-30 18:58                                         ` Stefan Kangas
2024-12-30 21:34                                         ` Pip Cet via Emacs development discussions.
2024-12-31  9:55                                           ` Andrea Corallo
2024-12-31 12:43                                           ` Eli Zaretskii
2024-12-31 14:01                                             ` Pip Cet via Emacs development discussions.
2025-01-04 16:34                                             ` Pip Cet via Emacs development discussions.
2025-01-04 18:33                                               ` Eli Zaretskii
2025-01-05 10:18                                                 ` Pip Cet via Emacs development discussions.
2025-01-06 11:23                                               ` Andrea Corallo
2025-01-06 14:46                                                 ` Eli Zaretskii
2025-01-06 18:41                                                   ` Andrea Corallo [this message]
2024-12-15  0:58                   ` Stefan Kangas
2024-12-12 10:42 ` Improving EQ Óscar Fuentes
2024-12-12 10:50   ` Andrea Corallo
2024-12-12 11:21     ` Óscar Fuentes
2024-12-13 12:24       ` Pip Cet via Emacs development discussions.
2024-12-12 17:05     ` Pip Cet via Emacs development discussions.
2024-12-12 18:10     ` John ff

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=yp14j2b6az0.fsf@fencepost.gnu.org \
    --to=acorallo@gnu.org \
    --cc=eggert@cs.ucla.edu \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=mattiase@acm.org \
    --cc=pipcet@protonmail.com \
    --cc=stefankangas@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.