Wed, 08 Oct 2014 20:51:01 +0900 ui: disable echo back of prompt input if ui is set to non-tty purposely
Yuya Nishihara <yuya@tcha.org> [Wed, 08 Oct 2014 20:51:01 +0900] rev 22783
ui: disable echo back of prompt input if ui is set to non-tty purposely 9ab18a912c44 is nice for test output, but it also affects command-server channel. Command-server client shouldn't receive echo-back message, which makes it harder to parse the output.
Fri, 03 Oct 2014 18:48:09 -0700 dirstate: cache util.normcase while constructing the foldmap
Siddharth Agarwal <sid0@fb.com> [Fri, 03 Oct 2014 18:48:09 -0700] rev 22782
dirstate: cache util.normcase while constructing the foldmap This is a small win on OS X. hg perfdirstatefoldmap: before: wall 0.399708 comb 0.410000 user 0.390000 sys 0.020000 (best of 25) after: wall 0.386331 comb 0.390000 user 0.370000 sys 0.020000 (best of 25)
Fri, 03 Oct 2014 18:47:28 -0700 normcase: for darwin, use fast ASCII lower
Siddharth Agarwal <sid0@fb.com> [Fri, 03 Oct 2014 18:47:28 -0700] rev 22781
normcase: for darwin, use fast ASCII lower Constructing the foldmap is much faster on OS X now. For a large real-world repo, hg perfdirstatefoldmap: before: wall 0.805278 comb 0.800000 user 0.790000 sys 0.010000 (best of 13) after: wall 0.399708 comb 0.410000 user 0.390000 sys 0.020000 (best of 25) This is a nice boost to 'hg status', especially with the third-party hgwatchman extension enabled (which eliminates stat calls). For the above repo, 'hg status' goes from 1.17 seconds to 0.74.
Fri, 03 Oct 2014 19:58:26 -0700 perf: add a way to measure the perf of constructing the foldmap
Siddharth Agarwal <sid0@fb.com> [Fri, 03 Oct 2014 19:58:26 -0700] rev 22780
perf: add a way to measure the perf of constructing the foldmap Constructing the foldmap is a necessary part of operations like 'hg status' on OS X. This command allows us to measure the perf of constructing it.
Fri, 03 Oct 2014 18:45:56 -0700 encoding.lower: use fast ASCII lower
Siddharth Agarwal <sid0@fb.com> [Fri, 03 Oct 2014 18:45:56 -0700] rev 22779
encoding.lower: use fast ASCII lower This benefits, among other things, the case collision auditor. On a Linux system with a large real-world repo where all filenames are ASCII, hg perfcca: before: wall 0.260157 comb 0.270000 user 0.230000 sys 0.040000 (best of 38) after: wall 0.164616 comb 0.160000 user 0.160000 sys 0.000000 (best of 54)
Fri, 03 Oct 2014 18:42:39 -0700 parsers: add a function to efficiently lowercase ASCII strings
Siddharth Agarwal <sid0@fb.com> [Fri, 03 Oct 2014 18:42:39 -0700] rev 22778
parsers: add a function to efficiently lowercase ASCII strings We need a way to efficiently lowercase ASCII strings. For example, 'hg status' needs to build up the fold map -- a map from a canonical case (for OS X, lowercase) to the actual case of each file and directory in the dirstate. The current way we do that is to try decoding to ASCII and then calling lower() on the string, labeled 'orig' below: str.decode('ascii') return str.lower() This is pretty inefficient, and it turns out we can do much better. I also tested out a condition-based approach, labeled 'cond' below: (c >= 'A' && c <= 'Z') ? (c + ('a' - 'A')) : c 'cond' turned out to be slower in all cases. A 256-byte lookup table with invalid values for everything past 127 performed similarly, but this was less verbose. On OS X 10.9 with LLVM version 6.0 (clang-600.0.51), the asciilower function was run against two corpuses. Corpus 1 (list of files from real-world repo, > 100k files): orig: wall 0.428567 comb 0.430000 user 0.430000 sys 0.000000 (best of 24) cond: wall 0.077204 comb 0.070000 user 0.070000 sys 0.000000 (best of 100) lookup: wall 0.060714 comb 0.060000 user 0.060000 sys 0.000000 (best of 100) Corpus 2 (mozilla-central, 113k files): orig: wall 0.238406 comb 0.240000 user 0.240000 sys 0.000000 (best of 42) cond: wall 0.040779 comb 0.040000 user 0.040000 sys 0.000000 (best of 100) lookup: wall 0.037623 comb 0.040000 user 0.040000 sys 0.000000 (best of 100) On a Linux server-class machine with GCC 4.4.6 20120305 (Red Hat 4.4.6-4): Corpus 1 (real-world repo, > 100k files): orig: wall 0.260899 comb 0.260000 user 0.260000 sys 0.000000 (best of 38) cond: wall 0.054818 comb 0.060000 user 0.060000 sys 0.000000 (best of 100) lookup: wall 0.048489 comb 0.050000 user 0.050000 sys 0.000000 (best of 100) Corpus 2 (mozilla-central, 113k files): orig: wall 0.153082 comb 0.150000 user 0.150000 sys 0.000000 (best of 65) cond: wall 0.031007 comb 0.040000 user 0.040000 sys 0.000000 (best of 100) lookup: wall 0.028793 comb 0.030000 user 0.030000 sys 0.000000 (best of 100) SSE instructions might help even more, but I didn't experiment with those.
Tue, 30 Sep 2014 15:58:08 -0700 match: remove unnecessary setting of self._always
Martin von Zweigbergk <martinvonz@gmail.com> [Tue, 30 Sep 2014 15:58:08 -0700] rev 22777
match: remove unnecessary setting of self._always The 'always' class calls its parent constructor with an empty list of patterns, which will result in a matcher that always matches. The parent constructor will set self._always to True in such cases, so there is no need to set it again.
Fri, 03 Oct 2014 00:43:22 +0900 bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org> [Fri, 03 Oct 2014 00:43:22 +0900] rev 22776
bookmarks: port to generic templater
Fri, 03 Oct 2014 00:36:36 +0900 bookmarks: split ui.write() so that it can be easily ported to formatter api
Yuya Nishihara <yuya@tcha.org> [Fri, 03 Oct 2014 00:36:36 +0900] rev 22775
bookmarks: split ui.write() so that it can be easily ported to formatter api Test output changes because color labels are applied separately.
Fri, 03 Oct 2014 00:15:39 +0900 bookmarks: iterate bookmarks list even if it is known to be empty
Yuya Nishihara <yuya@tcha.org> [Fri, 03 Oct 2014 00:15:39 +0900] rev 22774
bookmarks: iterate bookmarks list even if it is known to be empty This clarifies that "no bookmarks set" is displayed in addition to the list of bookmarks. In JSON output, for example, [] should be written if empty, and "no bookmarks set" message should be skipped.
(0) -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 +10000 tip