revset: added lazyset implementation to author revset
authorLucas Moscovicz <lmoscovicz@fb.com>
Wed, 29 Jan 2014 09:22:31 -0800
changeset 20448 92f6f2db3cf4
parent 20447 abb91b74f758
child 20449 ad2f1512eaa6
revset: added lazyset implementation to author revset Performance benchmarking: $ time hg log -qr "first(author(mpm))" 0:9117c6561b0b real 0m3.486s user 0m3.317s sys 0m0.077s $ time ./hg log -qr "first(author(mpm))" 0:9117c6561b0b real 0m0.551s user 0m0.295s sys 0m0.072s
mercurial/revset.py
--- a/mercurial/revset.py	Wed Jan 29 09:04:03 2014 -0800
+++ b/mercurial/revset.py	Wed Jan 29 09:22:31 2014 -0800
@@ -347,8 +347,7 @@
     # i18n: "author" is a keyword
     n = encoding.lower(getstring(x, _("author requires a string")))
     kind, pattern, matcher = _substringmatcher(n)
-    return baseset([r for r in subset if
-        matcher(encoding.lower(repo[r].user()))])
+    return lazyset(subset, lambda x: matcher(encoding.lower(repo[x].user())))
 
 def bisect(repo, subset, x):
     """``bisect(string)``