Patchwork D9016: histedit: cache description line

login
register
mail settings
Submitter phabricator
Date Sept. 11, 2020, 4:48 p.m.
Message ID <differential-rev-PHID-DREV-dovk3e2bfpseot7zjwq6-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/47145/
State Superseded
Headers show

Comments

phabricator - Sept. 11, 2020, 4:48 p.m.
martinvonz created this revision.
Herald added a reviewer: durin42.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  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).

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D9016

AFFECTED FILES
  hgext/histedit.py

CHANGE DETAILS




To: martinvonz, durin42, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/hgext/histedit.py b/hgext/histedit.py
--- a/hgext/histedit.py
+++ b/hgext/histedit.py
@@ -1151,7 +1151,7 @@ 
             h,
         )
 
-    @property
+    @util.propertycache
     def desc(self):
         summary = (
             cmdutil.rendertemplate(