This is an archive of the discontinued Mercurial Phabricator instance.

treemanifest: add an optimized __nonzero__()
ClosedPublic

Authored by martinvonz on Feb 13 2018, 5:42 PM.

Details

Summary

We use bool(manifest) in at least some places:

localrepo.py:1730
hgweb/webcommands.py:524

Since the treemanifest class doesn't define nonzero() (before this
patch), bool(manifest) will instead call len(), which can be slow
for treemanifests. This patch may make a noticeable difference in the
localrepo case above, but that only happens when committing a merge
and I haven't timed it.

Note that Durham already added a nonzero implementation to
manifestdict in b19291e5d506 (manifest: add nonzero method,
2016-11-03).

Diff Detail

Repository
rHG Mercurial
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

martinvonz created this revision.Feb 13 2018, 5:42 PM
indygreg accepted this revision.Feb 14 2018, 12:11 AM
indygreg added a subscriber: indygreg.

Perhaps we should formalize the manifest interface with an abstract base class...

This revision is now accepted and ready to land.Feb 14 2018, 12:11 AM
This revision was automatically updated to reflect the committed changes.