All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alex Vandiver <alexmv@dropbox.com>
To: Ben Peart <peartben@gmail.com>
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>, git@vger.kernel.org
Subject: Re: [PATCH 2/4] fsmonitor: Don't bother pretty-printing JSON from watchman
Date: Wed, 25 Oct 2017 17:44:10 -0700 (PDT)	[thread overview]
Message-ID: <alpine.DEB.2.10.1710251722310.9817@alexmv-linux> (raw)
In-Reply-To: <c43315f3-4155-6b07-bde2-5855dceacf80@gmail.com>

On Fri, 20 Oct 2017, Ben Peart wrote:
> > While I am very much infavor of this change (I was not aware of the
> > --no-pretty option), I would like to see some statistics on that. Could
> > you measure the impact, please, and include the results in the commit
> > message?
> > 
> > Ciao,
> > Johannes
> > 
> 
> I was also unaware of the --no-pretty option. I've tested this on Windows
> running version 4.9.0 of Watchman and verified that it does work correctly.
> I'm also curious if it produces any measurable difference in performance.

On a repository with ~160k files, the following test harness, which
requests all files inside the repository and parses that output:

--------------8<-----------
#!/usr/bin/perl

use strict;
use warnings;
use IPC::Open2;

my $pid = open2(\*CHLD_OUT, \*CHLD_IN, "watchman -j @ARGV")
    or die "open2() failed: $!\n" .
    "Falling back to scanning...\n";

my $query = qq|["query", "$ENV{PWD}", {}]|;

print CHLD_IN $query;
close CHLD_IN;
my $response = do {local $/; <CHLD_OUT>};

my $json_pkg;
eval {
    require JSON::XS;
    $json_pkg = "JSON::XS";
    1;
} or do {
    require JSON::PP;
    $json_pkg = "JSON::PP";
};

my $o = $json_pkg->new->utf8->decode($response);
--------------8<-----------

...run with dumbbench[1], produces:

    $ dumbbench -- ./test.pl
    cmd: Ran 22 iterations (2 outliers).
    cmd: Rounded run time per iteration: 5.240e+00 +/- 1.1e-02 (0.2%)
    $ dumbbench -- ./test.pl --no-pretty
    cmd: Ran 21 iterations (1 outliers).
    cmd: Rounded run time per iteration: 4.866e+00 +/- 1.3e-02 (0.3%)

...so a modest 8% speedup.  I note that those numbers are for a perl
with JSON::XS installed; without it installed, the runtime is so long
that I gave up waiting for it.

Anyways, I'll put that in the commit message in the re-roll.
 - Alex


[1] https://metacpan.org/release/Dumbbench

  reply	other threads:[~2017-10-26  0:44 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-20  1:11 [PATCH 0/4] fsmonitor fixes Alex Vandiver
2017-10-20  1:11 ` [PATCH 1/4] fsmonitor: Watch, and ask about, the top of the repo, not the CWD Alex Vandiver
2017-10-20  1:11   ` [PATCH 2/4] fsmonitor: Don't bother pretty-printing JSON from watchman Alex Vandiver
2017-10-20 13:00     ` Johannes Schindelin
2017-10-20 13:17       ` Ben Peart
2017-10-26  0:44         ` Alex Vandiver [this message]
2017-10-27 15:13           ` Johannes Schindelin
2017-10-20  1:11   ` [PATCH 3/4] fsmonitor: Document GIT_TRACE_FSMONITOR Alex Vandiver
2017-10-20 13:19     ` Ben Peart
2017-10-20  1:11   ` [PATCH 4/4] fsmonitor: Delay updating state until after split index is merged Alex Vandiver
2017-10-20 13:16     ` Johannes Schindelin
2017-10-20 21:47       ` Ben Peart
2017-10-21  2:06         ` Junio C Hamano
2017-10-21  3:35       ` Jeff King
2017-10-23  9:57         ` Johannes Schindelin
2017-10-23 12:36           ` Ben Peart
2017-10-26  1:20       ` Alex Vandiver
2017-10-20 12:58   ` [PATCH 1/4] fsmonitor: Watch, and ask about, the top of the repo, not the CWD Johannes Schindelin
2017-10-26  0:20     ` Alex Vandiver
2017-10-27 15:11       ` Johannes Schindelin
2017-10-20 13:17 ` [PATCH 0/4] fsmonitor fixes Johannes Schindelin

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=alpine.DEB.2.10.1710251722310.9817@alexmv-linux \
    --to=alexmv@dropbox.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=peartben@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.
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.