comparison hgext/histedit.py @ 45450:47d10ade5bc4

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
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 11 Sep 2020 09:35:49 -0700
parents 8c466bcb0879
children 5c8230ca37f2
comparison
equal deleted inserted replaced
45449:814c7430f828 45450:47d10ade5bc4
1149 action.ljust(6), 1149 action.ljust(6),
1150 r, 1150 r,
1151 h, 1151 h,
1152 ) 1152 )
1153 1153
1154 @property 1154 @util.propertycache
1155 def desc(self): 1155 def desc(self):
1156 summary = ( 1156 summary = (
1157 cmdutil.rendertemplate( 1157 cmdutil.rendertemplate(
1158 self.ctx, self.ui.config(b'histedit', b'summary-template') 1158 self.ctx, self.ui.config(b'histedit', b'summary-template')
1159 ) 1159 )