From e123aa2f305f4b73391d036cc1dd119eba5fd8ae Mon Sep 17 00:00:00 2001 From: Julien Castiaux Date: Wed, 9 Jun 2021 13:56:18 +0000 Subject: [PATCH] [IMP] base: optimize fields_get() in NameManager `NameManager`'s validation passes should not be language-dependent. Fetching translated model and view information thus incurs additional costs for no reason. Ensure translations are never enabled for `NameManager`'s work. In our benchmarch (py-spy with a rate of 200, render_all_view test-tag and website_sale,mrp,contacts,crm,timesheet installated), 20% of the time was spent in `NameManager.__init__` and thanks to this change it is reduced to 11%. Queries count from 19995 to 17886. Total runtime from 24s to 21.5s. closes odoo/odoo#71419 Task: 2463632 Related: odoo/enterprise#18596 Signed-off-by: Julien Castiaux --- odoo/addons/base/models/ir_ui_view.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/odoo/addons/base/models/ir_ui_view.py b/odoo/addons/base/models/ir_ui_view.py index e061429cc06..4a4cee8a364 100644 --- a/odoo/addons/base/models/ir_ui_view.py +++ b/odoo/addons/base/models/ir_ui_view.py @@ -2020,7 +2020,7 @@ class NameManager: self.mandatory_names_or_ids = dict() self.available_names_or_ids = set() self.validate = validate - self.Model = Model + self.Model = Model.with_context(lang=False) self.fields_get = self.Model.fields_get() def has_field(self, name, info=()):