D1938: ui: Improve ui.write performance when not coloring on Windows
yuja (Yuya Nishihara)
phabricator at mercurial-scm.org
Sat Feb 3 07:55:38 UTC 2018
yuja requested changes to this revision.
yuja added inline comments.
This revision now requires changes to proceed.
INLINE COMMENTS
> cmdutil.py:1593
> else:
> def write(s, **kw):
> fp.write(s)
We no longer need this `write()` wrapper because no labeling is required if fp is given.
> cmdutil.py:1620
> else:
> - for chunk, label in patch.diffui(repo, node1, node2, match,
> - changes, opts=diffopts, prefix=prefix,
> - relroot=relroot,
> - hunksfilterfn=hunksfilterfn):
> + chunksiter = patch.diffui(repo, node1, node2, match, changes,
> + opts=diffopts, prefix=prefix,
If we don't care labels, we can simply use `patch.diff()` and `.diffstat()` instead of `patch.diffui()` and `.diffstatui()` respectively.
> cmdutil.py:1624
> +
> + from itertools import izip_longest
> + def grouper(iterable, n):
Please move the import line to top.
> cmdutil.py:1629
> +
> + if fp is None and ui.writenolabels():
> + for block in grouper(chunksiter, 512):
`grouper()` could be replaced by `util.chunkbuffer()` over chunks of bytes.
if nolabel:
chunksiter = patch.diff()
util.chunkbuffer(chunksiter)
elif batchable:
chunksiter = patch.diffui()
util.chunkbuffer(ui.label(chunk, label) for chunk, label in chunksiter)
> ui.py:884
> + if self._buffers and not opts.get(r'prompt', False):
> + if not self._bufferapplylabels:
> + return True
Perhaps we can simply make _colormode public instead of adding
these functions?
If ui is buffered, batchable state wouldn't matter as all write()s
will be combined into a string.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D1938
To: joerg.sonnenberger, #hg-reviewers, yuja
Cc: yuja, lothiraldan, mercurial-devel
More information about the Mercurial-devel
mailing list