From e1c39a1dd1e95ac33c1eb73bf6fd6dd34afc1c59 Mon Sep 17 00:00:00 2001 From: Xavier-Do Date: Tue, 21 Mar 2023 12:54:01 +0000 Subject: [PATCH] [FIX] base: speedup generate_assets_nodes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit is_transpiled is only needed when generating a asset bundle while JavascriptAsset can be generated to compute the version hash. is_transpiled needs to read the content to be defined which is quite slow. Transforming is_transpiled into a lazy property will speedup the cold loading of generate_assets_node, especially when attachment already exists. Locally: - /web with all modules in debug=assets goes from ~350 to ~150 ms - generate_assets_nodes part goes from ~230 to ~55 ms closes odoo/odoo#116123 X-original-commit: 47b44e1ae61583a881bb2ede06cc02f4b9423cbc Signed-off-by: Simon Genin (ges@odoo) Signed-off-by: Xavier Dollé (xdo) --- odoo/addons/base/models/assetsbundle.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/odoo/addons/base/models/assetsbundle.py b/odoo/addons/base/models/assetsbundle.py index f4dbf7af2c6..2eca5ec3d7a 100644 --- a/odoo/addons/base/models/assetsbundle.py +++ b/odoo/addons/base/models/assetsbundle.py @@ -891,9 +891,15 @@ class JavascriptAsset(WebAsset): def __init__(self, bundle, inline=None, url=None, filename=None): super().__init__(bundle, inline, url, filename) - self.is_transpiled = is_odoo_module(super().content) + self._is_transpiled = None self._converted_content = None + @property + def is_transpiled(self): + if self._is_transpiled is None: + self._is_transpiled = bool(is_odoo_module(super().content)) + return self._is_transpiled + @property def content(self): content = super().content