Yuya Nishihara <yuya@tcha.org> [Thu, 17 Dec 2015 23:53:09 +0900] rev 27474
osutil: implement pure version of recvfds() for PyPy
This is less portable than the C version, but PyPy can't load CPython
extensions. So for now, this will be used on PyPy.
I've tested it on Linux amd64 and Mac OS X.
Yuya Nishihara <yuya@tcha.org> [Thu, 17 Dec 2015 23:41:46 +0900] rev 27473
osutil: implement recvmsg() of SCM_RIGHTS for chg command server
It will be used to attach client's stdio files to a background chg command
server.
The socket module of Python 2.x doesn't provide recvmsg(). This could be
implemented by using ctypes, but it would be less portable than the C version
because the handling of socket ancillary data heavily depends on preprocessor.
Also, some length fields are wrongly typed in the Linux kernel.
Matt Mackall <mpm@selenic.com> [Mon, 21 Dec 2015 14:52:18 -0600] rev 27472
cleanup: back out performance hacks amended into previous commit
timeless <timeless@mozdev.org> [Fri, 18 Dec 2015 06:33:48 +0000] rev 27471
commands: consistently indent notes 3 spaces
most notes have 3 spaces for indentation, these had 2...
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Dec 2015 18:38:21 -0800] rev 27470
perf: add perfrevlogrevision
As part of investigating performance improvements to revlog reading,
I needed a mechanism to measure every part of revlog reading so I knew
where time was spent and how effective optimizations were.
This patch implements a perf command for benchmarking the various
stages of reading a single revlog revision.
When executed against a manifest revision at the end of a 30,000+
long delta chain in mozilla-central, the command demonstrates that
~80% of time is spent in zlib decompression.
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Dec 2015 19:02:02 -0800] rev 27469
commands: use revlog._deltachain in debugdeltachain
We have a nice API now. Use it.
This does mean we introduce an extra index lookup for each revision.
Considering this is a debug command, the overhead should be acceptable.
We could add the chain size to revlog._deltachain(). However, that
feels like avoidable overhead.
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Dec 2015 18:56:05 -0800] rev 27468
revlog: refactor delta chain computation into own function
This code is already written in multiple locations.
While this code needs to be fast and extracting it to its own function
adds overhead, code paths reading delta chains typically read,
decompress, and do binary patching on revlog data from the delta chain.
This other work (especially zlib decompression) almost certainly
accounts for a lot more time than the overhead of introducing a Python
function call. So I'm not worried about the performance impact of this
change.