[Updated] D8586: files: speed up `hg files` when no flags change display
valentin.gatienbaron (Valentin Gatien-Baron)
phabricator at mercurial-scm.org
Tue May 26 16:20:06 UTC 2020
valentin.gatienbaron updated this revision to Diff 21480.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D8586?vs=21473&id=21480
BRANCH
default
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D8586/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D8586
AFFECTED FILES
mercurial/cmdutil.py
CHANGE DETAILS
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -2752,15 +2752,28 @@
ret = 1
needsfctx = ui.verbose or {b'size', b'flags'} & fm.datahint()
- for f in ctx.matches(m):
- fm.startitem()
- fm.context(ctx=ctx)
- if needsfctx:
- fc = ctx[f]
- fm.write(b'size flags', b'% 10d % 1s ', fc.size(), fc.flags())
- fm.data(path=f)
- fm.plain(fmt % uipathfn(f))
- ret = 0
+ if fm.isplain() and not needsfctx:
+ # Fast path. The speed-up comes from skipping the formatter, and batching
+ # calls to ui.write.
+ buf = []
+ for f in ctx.matches(m):
+ buf.append(fmt % uipathfn(f))
+ if len(buf) > 100:
+ ui.write(b''.join(buf))
+ del buf[:]
+ ret = 0
+ if buf:
+ ui.write(b''.join(buf))
+ else:
+ for f in ctx.matches(m):
+ fm.startitem()
+ fm.context(ctx=ctx)
+ if needsfctx:
+ fc = ctx[f]
+ fm.write(b'size flags', b'% 10d % 1s ', fc.size(), fc.flags())
+ fm.data(path=f)
+ fm.plain(fmt % uipathfn(f))
+ ret = 0
for subpath in sorted(ctx.substate):
submatch = matchmod.subdirmatcher(subpath, m)
To: valentin.gatienbaron, #hg-reviewers, marmoute
Cc: marmoute, joerg.sonnenberger, mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-patches/attachments/20200526/e53db9f5/attachment-0002.html>
More information about the Mercurial-patches
mailing list