Odoo 15 vs Odoo 16

General overview of changes

Odoo 16 has introduced major improvements in the performance of the product on both the Back End and Front End sides.

Let’s start with the changes made to the Front End, which concern the migration to the OWL Framework. Introduced in Odoo 14, the porting to OWL has been completed and now handles 99% of the JS codebase, leaving only 1% to the old engine for the PoS.(Point of Sale) module which has specific requirements.

The use of this new version of the framework has made it possible to lighten the JS codebase by 30% and the CSS codebase by 68%. Having completely rewritten the graphics engine, the dark navigation mode is now also available. 

Let us now turn to the changes made to the Back End:

  • Chatter no longer uses long polling but websockets, 
  • The consumption of large files has been optimised and can also be handled by Nginx,
  • Fewer RPC calls: This allows faster processing of One2Many relations within views 
  • Loading bars no longer make HTTP requests but are handled via websockets.


Other changes concern the execution speed of processes and interfacing with the database:

The onchange method has been deprecated in favour of compute and precompute, translations are no longer handled by the database but use Json DB, and PostgreSQL’s B Tree indexes have been introduced.


Characteristics of the test environment

Two servers with identical performance are used, let us see in detail how Odoo’s memory and workers parameters were calculated and set.

Number of CPUs: 2

Threads: 2 


Assume a number of 12 concurrent users

Workers: 3 (6 users per worker + 1 for cron)

We consider that 20% are heavy requests and 80% simple requests to the server.


We tune the server by setting these configuration values


workers = 3

max_cron_threads = 1

limit_time_cpu = 60

limit_time_real = 170


limit_memory_soft = 25273917440

limit_request = 8196

Odoo Enterprise offers a profiling tool that we will use for some of the comparison tests.

Both databases that will be used are pre-populated with the demo dataset provided by Odoo.

Number of RPC requests executed

During the presentation of the performance improvements released with the latest version of the product, Odoo states that it has reduced the number of HTTP calls (XML-RPC or JSON-RPC) made to the server, especially with regard to the management of O2M (One2Many) relations. 

The purpose of this test is to see how many requests are made to the server in a given use-case, in this case: the creation of an estimate and the issuing of an invoice.

Odoo 15

We created a quote, added products and created an invoice in about 10 seconds. During the entire navigation, 294 requests were profiled and 9705 entries were counted.

Odoo 16

Lo stesso identico test effettuato su Odoo 16, porta un risultato davvero notevole.
Il tempo totale di utilizzo e’ di 6 secondi. Durante la navigazione, sono state profilate 71 richieste e contate 2217 entries. Notevole no? 

Differenza tra Long Polling e Web Sockets

Long polling e WebSockets sono entrambi metodi per la comunicazione in tempo reale tra un client e un server, ma differiscono nella loro implementazione e nelle loro caratteristiche di prestazione.


Long Polling:

  • Il client invia una richiesta al server e mantiene la connessione aperta finché non sono disponibili nuovi dati o si verifica un timeout.

  • Il client quindi ripete la richiesta e il processo continua, simulando una connessione continua.

  • Utilizza HTTP e può essere una soluzione semplice, ma porta a un aumento della latenza a causa degli handshakes ripetuti e della ri-stabilizzazione delle connessioni.



  • Utilizza una connessione persistente tra il client e il server, permettendo una comunicazione bidirezionale in tempo reale.

  • La connessione viene stabilita solo una volta e rimane aperta per la durata della comunicazione.

  • Utilizza il protocollo WebSockets progettato appositamente per la comunicazione in tempo reale, con conseguente riduzione della latenza rispetto al long polling.


In sintesi, i WebSockets forniscono una soluzione di comunicazione in tempo reale più efficiente ed efficace rispetto al long polling, ma potrebbero richiedere un supporto e una configurazione supplementari lato server.


Confrontiamo i dati




Tempo totale:

Odoo 16 è addirittura più veloce del 40% rispetto ad Odoo 15!



Odoo nel tempo dimostra di essere un prodotto in costante crescita e aggiornamento. Di versione in versione sta progredendo per offrire strumenti sempre più ottimizzati e performanti.

Rispetto ai software concorrenti dimostra una facilità di utilizzo che permette un reale risparmio di tempi nelle operazioni di gestione del business. Permettendo a chi lo utilizza di focalizzarsi sempre di più sulle attività che permettono all’azienda di essere più profittevole.