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

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

From
AVAlex Vandiver <alexmv@dropbox.com>
Date
Oct 27, 2017, 23:26 UTC
Message-ID
<ff7745089999ff3bb2c014d2d4f1659a9de4e859.1509146542.git.alexmv@dropbox.com>
In-Reply-To
<20171027232637.30395-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;
    use JSON::XS;
    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>};
    JSON::XS->new->utf8->decode($response);
Signed-off-by: Alex Vandiver <alexmv@dropbox.com>
---
 templates/hooks--fsmonitor-watchman.sample | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
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: Alex VandiverNext: Alex Vandiver
Message 3 of 10 in “0/4 fsmonitor fixes”
  1. 0/4 fsmonitor fixesAlex Vandiver, Oct 27, 2017
  2. 1/4 fsmonitor: Set the PWD to the top of the working treeAlex Vandiver, Oct 27, 2017
  3. 2/4 fsmonitor: Don't bother pretty-printing JSON from watchmanAlex Vandiver, Oct 27, 2017
  4. 3/4 fsmonitor: Document GIT_TRACE_FSMONITORAlex Vandiver, Oct 27, 2017
  5. 4/4 fsmonitor: Delay updating state until after split index is mergedAlex Vandiver, Oct 27, 2017
  6. Junio C HamanoOct 31, 2017
  7. Johannes SchindelinOct 31, 2017
  8. Alex VandiverOct 31, 2017
  9. Johannes SchindelinOct 29, 2017
  10. Ben PeartOct 30, 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.