Sat, 21 Nov 2015 15:43:04 -0800 revsetbenchmarks: support benchmarking changectx loading
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 21 Nov 2015 15:43:04 -0800] rev 27073
revsetbenchmarks: support benchmarking changectx loading Many revset consumers construct changectx instances for each returned result. Add support for benchmarking this to our revset benchmark script. In the future, we might want to have some kind of special syntax in the parsed revset files to engage this mode automatically. This would enable us to load changectxs for revsets that do that in the code and would more accurately benchmark what's actually happening. For now, running all revsets with or without changectxs is sufficient.
Sat, 21 Nov 2015 15:39:18 -0800 perf: support obtaining contexts from perfrevset
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 21 Nov 2015 15:39:18 -0800] rev 27072
perf: support obtaining contexts from perfrevset Previously, perfrevset called repo.revs(), which only returns integer revisions. Many revset consumers call repo.set(), which returns changectx instances. Or they obtain a context manually later. Since obtaining changectx instances when evaluating revsets is common, this patch adds support for benchmarking this use case. While we added an if conditional for every benchmark loop, it doesn't appear to matter since revset evaluation dwarfs the cost of a single if.
Sat, 21 Nov 2015 11:07:30 -0800 localrepo: improve docstring for revset methods
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 21 Nov 2015 11:07:30 -0800] rev 27071
localrepo: improve docstring for revset methods revs() doesn't return a list. Also document what its arguments do. Also clarify that set() is just a convenience wrapper around revs().
Sun, 22 Nov 2015 16:23:20 -0800 revlog: improve documentation
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 22 Nov 2015 16:23:20 -0800] rev 27070
revlog: improve documentation There are a lot of functions and variables doing similar things. Document the role and functionality of each to make it easier to grok.
Sat, 21 Nov 2015 22:28:01 -0800 demandimport: don't enable when running under PyPy
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 21 Nov 2015 22:28:01 -0800] rev 27069
demandimport: don't enable when running under PyPy On demand importing doesn't work with PyPy for some reason. Don't honor requests to enable demand importing when running under PyPy.
Sat, 14 Nov 2015 17:14:14 -0800 ui.write: don't clear progress bar when writing to a buffer
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 14 Nov 2015 17:14:14 -0800] rev 27068
ui.write: don't clear progress bar when writing to a buffer ui.write() has 2 modes: buffered and unbuffered. In buffered mode, we capture output before writing it. This is how changeset printing works, for example. Previously, we were potentially clearing the progress bar for every call to ui.write(). In buffered mode, this clearing was useless because the clearing function would be called again before actually writing the buffered data. This patch stops the useless calling of _progclear() unless we are actually writing data. During changeset printing with the default template, this removes ~6 function calls per changeset, making changeset printing slightly faster. before: 23.76s after: 23.35s delta: -0.41s (98.3% of original)
Sun, 22 Nov 2015 21:20:08 -0500 test-resolve: fix '--tool f' invocation for Windows
Matt Harbison <matt_harbison@yahoo.com> [Sun, 22 Nov 2015 21:20:08 -0500] rev 27067
test-resolve: fix '--tool f' invocation for Windows Windows can't invoke a python script directly, so invoke sh.exe instead. According to sid0, the output changes are due to the fact that 'f' is no longer being passed all of the args that it was, but these changes aren't essential to the test [1]. [1] https://selenic.com/pipermail/mercurial-devel/2015-November/075768.html
Sat, 14 Nov 2015 17:30:10 -0800 util.datestr: use divmod()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 14 Nov 2015 17:30:10 -0800] rev 27066
util.datestr: use divmod() We were computing the quotient and remainder of a division operation separately. The built-in divmod() function allows us to do this with a single function call. Do that.
Sat, 14 Nov 2015 17:44:01 -0800 cmdutil.changeset_printer: pass context into showpatch()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 14 Nov 2015 17:44:01 -0800] rev 27065
cmdutil.changeset_printer: pass context into showpatch() Before, we passed the node then subsequently performed a lookup on repo.changelog. We already has the context available, so just pass it in. This does result in a small performance win. But I doubt it will show up anywhere because diff[stat] calculation will dwarf the time spent to create a changectx. Still, we should be creating fewer changectx out of principle.
Sat, 21 Nov 2015 19:21:01 -0800 context: avoid extra parents lookups
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 21 Nov 2015 19:21:01 -0800] rev 27064
context: avoid extra parents lookups Resolving parents requires reading from the changelog, which is a few attributes and function calls away. Parents lookup occurs surprisingly often. Micro optimizing the code to avoid redundant lookups of parents appears to make `hg log` on my Firefox repo a little faster: before: 24.91s after: 23.76s delta: -1.15s (95.4% of original)
(0) -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 +10000 tip