c3399b5470f4d26cecc361134c3bb80349e7c691
create
Issue: ------ The `create` method (models.py) doesn't scale correctly (with huge number of values) when compute store no-readonly field(s) are in values (at most one). It is due to the method `protecting` (api.py) which has a bad complexity in the `create` situation (list of (field, records) pairs as argument): O(r²) with `r` = number of record containing the protected field: List of `len(r)` send to `protecting`, loop of this list (`r` factor), loop on fields (constant factor), create a new frozen set with the previous one (`r` factor). Fix: ---- Decrease the complexity to O(r) by creating a map of set of ids by protected field which allows avoiding recreating a new frozenset for each record (update with tuple of one inside => O(1)). Performance gain: ---------- For a very simple model with only one compute store no-readonly field, and all `create` `values` contains this field. +--------------+---------------+---------------+---------------+----------------+ | Batch -> | 1000 | 10000 | 30000 | 80000 | +--------------+---------------+---------------+---------------+----------------+ | Before (sec) | 0.083 ± 0.006 | 1.433 ± 0.091 | 8.764 ± 0.609 | 94.428 ± 3.021 | | After (sec) | 0.069 ± 0.003 | 0.706 ± 0.006 | 2.188 ± 0.076 | 5.875 ± 0.104 | +--------------+---------------+---------------+---------------+----------------+ closes odoo/odoo#80437 Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
…
…
…
Odoo
Odoo is a suite of web based open source business apps.
The main Odoo Apps include an Open Source CRM, Website Builder, eCommerce, Warehouse Management, Project Management, Billing & Accounting, Point of Sale, Human Resources, Marketing, Manufacturing, ...
Odoo Apps can be used as stand-alone applications, but they also integrate seamlessly so you get a full-featured Open Source ERP when you install several Apps.
Getting started with Odoo
For a standard installation please follow the Setup instructions from the documentation.
To learn the software, we recommend the Odoo eLearning, or Scale-up, the business game. Developers can start with the developer tutorials
Languages
Python
49.6%
JavaScript
47.8%
SCSS
2%
CSS
0.3%
HTML
0.2%