git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 2/4] fsmonitor: Don't bother pretty-printing JSON from watchman

From
Ben Peart <peartben@gmail.com>
Date
Oct 26, 2017, 20:05 UTC
Message-ID
<9bd24b15-6232-1afd-abbe-02870c51c7ad@gmail.com>
In-Reply-To
<42fd8bccb78992a2894e711e057230a673891628.1508981451.git.alexmv@dropbox.com>
On 10/25/2017 9:31 PM, Alex Vandiver wrote:
Show 5 quoted lines
> This provides modest performance savings.  Benchmarking with the
> following program, with and without `--no-pretty`, we find savings of
> 23% (0.316s -> 0.242s) in the git repository, and savings of 8% (5.24s
> -> 4.86s) on a large repository with 580k files in the working copy.
> 
Given this patch series is all about speed, it's good to see *any* wins 
- especially those that don't impact functionality at all.  The 
performance win of --no-pretty is greater than I expected.
Show 44 quoted lines
>      #!/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::XSomething;
>          $json_pkg = "JSON::XSomething";
>          1;
>      } or do {
>          require JSON::PP;
>          $json_pkg = "JSON::PP";
>      };
> 
>      my $o = $json_pkg->new->utf8->decode($response);
> 
> Signed-off-by: Alex Vandiver <alexmv@dropbox.com>
> ---
>   t/t7519/fsmonitor-watchman                 | 2 +-
>   templates/hooks--fsmonitor-watchman.sample | 2 +-
>   2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/t/t7519/fsmonitor-watchman b/t/t7519/fsmonitor-watchman
> index a3e30bf54..79f24325c 100755
> --- a/t/t7519/fsmonitor-watchman
> +++ b/t/t7519/fsmonitor-watchman
> @@ -50,7 +50,7 @@ launch_watchman();
>   
>   sub launch_watchman {
>   
> -	my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j')
> +	my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty')

Since this is a test script performance isn't critical. This version of the integration script logs the response to a file in .git/watchman-response.json and is much more human readable without the "--no-pretty." As such, I'd leave this one pretty.

Show 13 quoted lines
>   	    or die "open2() failed: $!\n" .
>   	    "Falling back to scanning...\n";
>   
> diff --git a/templates/hooks--fsmonitor-watchman.sample b/templates/hooks--fsmonitor-watchman.sample
> index 9eba8a740..9a082f278 100755
> --- a/templates/hooks--fsmonitor-watchman.sample
> +++ b/templates/hooks--fsmonitor-watchman.sample
> @@ -49,7 +49,7 @@ launch_watchman();
>   
>   sub launch_watchman {
>   
> -	my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j')
> +	my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty')

No human will see this response so the faster --no-pretty option makes sense.

>   	    or die "open2() failed: $!\n" .
>   	    "Falling back to scanning...\n";
>   
> 
Previous: Alex VandiverNext: Ben Peart
Message 10 of 17 in “fsmonitor fixes”
  1. 0/4 fsmonitor fixesAlex Vandiver, Oct 26, 2017
  2. 1/4 fsmonitor: Set the PWD to the top of the working treeAlex Vandiver, Oct 26, 2017
  3. Alex VandiverOct 26, 2017
  4. Ben PeartOct 26, 2017
  5. Alex VandiverOct 26, 2017
  6. Ben PeartOct 27, 2017
  7. Alex VandiverOct 27, 2017
  8. Johannes SchindelinOct 29, 2017
  9. 2/4 fsmonitor: Don't bother pretty-printing JSON from watchmanAlex Vandiver, Oct 26, 2017
  10. Ben PeartOct 26, 2017
  11. Ben PeartOct 26, 2017
  12. Alex VandiverOct 26, 2017
  13. Ben PeartOct 27, 2017
  14. 3/4 fsmonitor: Document GIT_TRACE_FSMONITORAlex Vandiver, Oct 26, 2017
  15. 4/4 fsmonitor: Delay updating state until after split index is mergedAlex Vandiver, Oct 26, 2017
  16. Ben PeartOct 26, 2017
  17. Johannes SchindelinOct 29, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.