1d13928764defd91d4ec2b2ce9af238a591c7c30
Previously, mapped was following a very naive approach, which was simply calling the field name passed as input for every record in a recordset, sequentially. The problem with this approach is that we will potentially recompute the same fields multiple times for differents records, when this could be done once per field for ALL records, and store this value in cache for further access. Another potential problem is that we don't take advantage of the ORM's prefetching to fetch all the records that are not in cache at once, instead of doing the same query for every record in the recordset. Yet another problem is the conversion of each cache value to a record format and then combining all of the individual records into a single recordset, which, depending on the size of the recordset, can take an unbelievable amount of CPU time. With this new implementation of `mapped()` we take care of all of these problems: This is done by first delegating `mapped()` from the model to the field, this mapped takes a recordset as input and it will try to batch compute and prefetch as much as possible for the entire recordset, but it will not keep these values for the actual output, it just stores everything in cache and then at the end, retrieves everything from the cache to guarantee the same order. After the mapped, the conversion from cache format to record format is delegated to the new `convert_to_record_multi` which will fetch all the ids and then perform a single browse to encapsulate all of the records into a single recordset with the least amount of overhead possible. Part of Task 2170344 closes odoo/odoo#42611 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%