Sao is quiet slow when displaying a large list. I track this to the Column.render method. It calls record.load and then make the rendering in the callback. Record.load has a design such that it return a resolved promise if the field is already loaded. The problem is that this creates a lot of promises which is expensive and it take times to resolve and trigger them.
So I think a proper solution would be:
- load all needed fields for all the displayed records at once (or per bunch) but without loading again already loaded records
- test in .render method if the field is loaded instead of always calling .load
For that, I think the .load method should be split to allow to use the RPC read call and result (The split should be done in tryton also for compatibility but not use for the tree because it is not needed).