From 5ae684f79d063f3da9f7f8e430f0eb044de4e0a6 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Fri, 19 Mar 2021 16:33:35 +0000 Subject: [PATCH] [IMP] core: do not assign default values on fields This keeps field.__dict__ as small as possible. On a registry with 296 modules, this saves 40 kilobytes of memory, which is about 0.35% of the registry's memory footprint. --- odoo/fields.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/odoo/fields.py b/odoo/fields.py index 6d6cf60d1d7..3726e459f69 100644 --- a/odoo/fields.py +++ b/odoo/fields.py @@ -419,7 +419,9 @@ class Field(MetaField('DummyField', (object,), {})): if extra_keys: attrs['_extra_keys'] = extra_keys - self.__dict__.update(attrs) + for key, val in attrs.items(): + if getattr(self, key, Default) != val: + setattr(self, key, val) # prefetch only stored, column, non-manual and non-deprecated fields if not (self.store and self.column_type) or self.manual or self.deprecated: