# HG changeset patch # User Yuya Nishihara # Date 2018-06-21 13:27:30 # Node ID 256581484c7fc93a721ee2fb0b240cb6d957f421 # Parent f79237942dec07f95b5706156084fcda142cbfc2 templater: resurrect cache of engine instance The engine-level cache was effectively disabled at 48289eafb37d "templater: drop extension point of engine classes (API)" by mistake, which made template rendering quite slow. Spotted by Martin von Zweigbergk. diff --git a/mercurial/templater.py b/mercurial/templater.py --- a/mercurial/templater.py +++ b/mercurial/templater.py @@ -872,6 +872,8 @@ class templater(object): self.defaults = defaults self._resources = resources self._loader = loader(cache, aliases) + self._proc = engine(self._loader.load, self._filters, self.defaults, + self._resources) self._minchunk, self._maxchunk = minchunk, maxchunk @classmethod @@ -923,8 +925,7 @@ class templater(object): def generate(self, t, mapping): """Return a generator that renders the specified named template and yields chunks""" - proc = engine(self.load, self._filters, self.defaults, self._resources) - stream = proc.process(t, mapping) + stream = self._proc.process(t, mapping) if self._minchunk: stream = util.increasingchunks(stream, min=self._minchunk, max=self._maxchunk)