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

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

From
AVAlex Vandiver <alexmv@dropbox.com>
Date
Oct 26, 2017, 01:31 UTC
Message-ID
<42fd8bccb78992a2894e711e057230a673891628.1508981451.git.alexmv@dropbox.com>
In-Reply-To
<20171026013117.30034-1-alexmv@dropbox.com>

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.

    #!/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')
 	    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')
 	    or die "open2() failed: $!\n" .
 	    "Falling back to scanning...\n";
 
-- 
2.15.0.rc1.413.g76aedb451
Previous: Johannes SchindelinNext: Ben Peart
Message 9 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.