qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: "Alex Bennée" <alex.bennee@linaro.org>, qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
	"open list:Block layer core" <qemu-block@nongnu.org>,
	Max Reitz <mreitz@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v1 02/26] qemu-io-cmds: use clock_gettime for benchmarking
Date: Thu, 30 May 2019 13:41:29 -0500	[thread overview]
Message-ID: <088331e9-44e1-facd-917f-cab471288ecf@linaro.org> (raw)
In-Reply-To: <20190530101603.22254-3-alex.bennee@linaro.org>

On 5/30/19 5:15 AM, Alex Bennée wrote:
> -static struct timeval tsub(struct timeval t1, struct timeval t2)
> +static struct timespec tsub(struct timespec t1, struct timespec t2)
>  {
> -    t1.tv_usec -= t2.tv_usec;
> -    if (t1.tv_usec < 0) {
> -        t1.tv_usec += 1000000;
> +    t1.tv_nsec -= t2.tv_nsec;
> +    if (t1.tv_nsec < 0) {
> +        t1.tv_nsec += 1000000000;

Rather than counting zeros, should we move or copy NANOSECONDS_PER_SECOND?

> +    double time = (double)tv.tv_sec + ((double)tv.tv_nsec / 1000000000.0);

On that same vein, I'll note this can also be spelled "1e9".
Also, the casts to double are superfluous, once we have one FP constant.

> +static void timestr(struct timespec *tv, char *ts, size_t size, int format)
>  {
> -    double usec = (double)tv->tv_usec / 1000000.0;
> +    double nsec = (double)tv->tv_nsec / 1000000000.0;

Similarly.

>  
>      if (format & TERSE_FIXED_TIME) {
>          if (!HOURS(tv->tv_sec)) {
>              snprintf(ts, size, "%u:%02u.%02u",
>                      (unsigned int) MINUTES(tv->tv_sec),
>                      (unsigned int) SECONDS(tv->tv_sec),
> -                    (unsigned int) (usec * 100));
> +                    (unsigned int) (nsec * 100000));

The multiplier here is wrong.

The existing formatting here is bonkers, which doesn't help.  Why should we
convert to double, divide into a fraction of a second, shift the decimal place,
and truncate conversion to integer?

The formatting should clearly be

  snprintf(ts, size, "%u:%05.2f",
           (unsigned int) MINUTES(tv->tv_sec),
           SECONDS(tv->tv_sec) + nsec);

so that the complete seconds plus fraction of a second is rounded to two digits
after the decimal point, and is left-padded with 0's so that the entire number
fits in 5 characters, not forgetting the decimal point itself (i.e. 00.00).

Likewise to the other two occurrences in this function.


r~


  reply	other threads:[~2019-05-30 18:42 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-30 10:15 [Qemu-devel] [PATCH v1 00/26] testing/next queue (iotests, docker, tests/vm) Alex Bennée
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 01/26] editorconfig: add setting for shell scripts Alex Bennée
2019-05-30 18:15   ` Richard Henderson
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 02/26] qemu-io-cmds: use clock_gettime for benchmarking Alex Bennée
2019-05-30 18:41   ` Richard Henderson [this message]
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 03/26] tests: Run the iotests during "make check" again Alex Bennée
2019-06-07  9:33   ` Alex Bennée
2019-07-15 11:06     ` Thomas Huth
2019-07-15 11:58       ` Alex Bennée
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 04/26] tests/docker: Update the Fedora image to Fedora 30 Alex Bennée
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 05/26] tests/docker: Update the Fedora cross compile images to 30 Alex Bennée
2019-05-30 18:43   ` Richard Henderson
2019-05-31  6:54   ` Philippe Mathieu-Daudé
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 06/26] tests/docker: Update the Ubuntu image to 19.04 Alex Bennée
2019-05-30 18:44   ` Richard Henderson
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 07/26] .travis.yml: bump gcc sanitiser job to gcc-9 Alex Bennée
2019-05-31  7:56   ` Stefano Garzarella
2019-05-31  8:16     ` Alex Bennée
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 08/26] .travis.yml: add clang ubsan job Alex Bennée
2019-05-31  6:21   ` Philippe Mathieu-Daudé
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 09/26] tests/vm: Use python configured on build Alex Bennée
2019-05-31  6:22   ` Philippe Mathieu-Daudé
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 10/26] tests/vm: Port basevm to Python 3 Alex Bennée
2019-05-31  6:22   ` Philippe Mathieu-Daudé
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 11/26] tests/vm: Fix build-centos docker-based tests run Alex Bennée
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 12/26] tests/vm: Add missing variables on help Alex Bennée
2019-05-31  6:45   ` Philippe Mathieu-Daudé
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 13/26] scripts: use git archive in archive-source Alex Bennée
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 14/26] tests/vm: python3 fixes Alex Bennée
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 15/26] tests/vm: send proxy environment variables over ssh Alex Bennée
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 16/26] tests/vm: use ssh with pty unconditionally Alex Bennée
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 17/26] tests/vm: run test builds on snapshot Alex Bennée
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 18/26] tests/vm: proper guest shutdown Alex Bennée
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 19/26] tests/vm: add vm-boot-{ssh, serial}-<guest> targets Alex Bennée
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 20/26] tests/vm: add DEBUG=1 to help text Alex Bennée
2019-05-31  6:49   ` Philippe Mathieu-Daudé
2019-05-31  8:15     ` Alex Bennée
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 21/26] tests/vm: serial console support helpers Alex Bennée
2019-05-30 10:15 ` [Qemu-devel] [PATCH v1 22/26] tests/vm: openbsd autoinstall, using serial console Alex Bennée
2019-05-30 10:16 ` [Qemu-devel] [PATCH v1 23/26] tests/vm: freebsd " Alex Bennée
2019-05-30 10:16 ` [Qemu-devel] [PATCH v1 24/26] tests/vm: netbsd " Alex Bennée
2019-05-30 10:16 ` [Qemu-devel] [PATCH v1 25/26] tests/vm: fedora " Alex Bennée
2019-05-30 10:16 ` [Qemu-devel] [PATCH v1 26/26] tests/vm: ubuntu.i386: apt proxy setup Alex Bennée

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=088331e9-44e1-facd-917f-cab471288ecf@linaro.org \
    --to=richard.henderson@linaro.org \
    --cc=alex.bennee@linaro.org \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).