[FIX] base: speedup generate_assets_nodes

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) <ges@odoo.com>
Signed-off-by: Xavier Dollé (xdo) <xdo@odoo.com>
This commit is contained in:
Xavier-Do
2023-03-22 13:42:48 +01:00
parent 1b3e98aceb
commit e1c39a1dd1
+7 -1
View File
@@ -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