On Sun, May 11, 2014 at 1:38 AM, David Turner <dturner@xxxxxxxxxxxxxxxx> wrote: >> I got "warning: Watchman watch error: Got bad JSON from watchman >> get-sockname: '[' or '{' expected near end of file". Any ideas what I >> did wrong? I'm using watchman.git and libwatchman.git. check-0.9.11 >> and jansson-2.4 were installed by system (gentoo). > > What do you get from watchman get-sockname on the command-line? Do the > watchman tests pass? Found the problem. "watchman" binary is not in $PATH but popen() did not complain (or it did but your "2>/dev/null" in watchman_connect suppressed it). BTW you need to update the array size of "expressions" in test_watchman_misc(). So without watchman I got 299.871ms read_index_from:1538 if (verify_hdr(hdr, mmap_size) < 0) go 498.205ms cmd_status:1300 refresh_index(&the_index, REFRESH_QUIE 796.050ms wt_status_collect:622 wt_status_collect_untracked(s) and with watchman ("git status" ran several times to make sure it's cached) 301.950ms read_index_from:1538 if (verify_hdr(hdr, mmap_size) < 0) go 34.918ms read_fs_cache:347 if (verify_hdr(hdr, mmap_size) < 0) go 1564.096ms watchman_load_fs_cache:628 update_fs_cache(istate, result); 161.930ms cmd_status:1300 refresh_index(&the_index, REFRESH_QUIE 251.614ms wt_status_collect:622 wt_status_collect_untracked(s) Given the total time of "git status" without watchman is 1.9s,, update_fs_cache() nearly matches that number alone. All that is spent in the exclude update code in the function, but if you do last_excluding_matching() anyway, why cache it? I think we're paying lookup cost in refresh_index(). I forced CE_VALID bit on as an experiment and refresh_index() went down to 33ms. A bit surprised about wt_status_collect_untracked number. I verified that last_excluding_matching() still runs (on the same number of entries like in no-watchman case). Replacing fs_cache_open() in add_excludes_from_file_to_list() to plain open() does not change the number, so we probably won't need that (unless your worktree is filled with .gitignore, which I doubt it's a norm). So about 500ms saved is in opendir/readdir.. A simple/separate opendir/readdir/closedir program confirms that (ugh!). -- Duy -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html