histedit: cache description line
authorMartin von Zweigbergk <martinvonz@google.com>
Fri, 11 Sep 2020 09:35:49 -0700
changeset 45450 47d10ade5bc4
parent 45449 814c7430f828
child 45451 e53a3d0ef416
histedit: cache description line Navigating the curses-based histedit interface can be pretty slow because it redraws everything whenever you make a change. This patch simply replaces `@property` by `@util.propertycache` on the `histeditrule.desc()` function so it's not re-calculated every time the screen needs to be re-rendered. I timed it on an example of 30 simple commits, where I moved the top commit down 25 steps and then up 25 steps after. Before this patch, that (the whole `hg histedit` invocation) took 11.6 s of CPU and after this patch it took 0.8 s). Differential Revision: https://phab.mercurial-scm.org/D9016
hgext/histedit.py
--- a/hgext/histedit.py	Fri Sep 11 09:55:08 2020 -0700
+++ b/hgext/histedit.py	Fri Sep 11 09:35:49 2020 -0700
@@ -1151,7 +1151,7 @@
             h,
         )
 
-    @property
+    @util.propertycache
     def desc(self):
         summary = (
             cmdutil.rendertemplate(