I’m experiencing performance issues after replacing our use of the Table component with the Grid. What we see is that if we populate the Grid with 1000 rows x 120 cols then once our code returns control to the framework, it then takes a further 20secs before the UI updates and is responsive.
We’re populating the Grid using an IndexedContainer, which we create a new instance of for each query. The grid is set to have multi-level column headers (usually 1-4 rows), and we have 1 frozen column. The row headers use joining, so some headers span multiple columns (I’ve tried commenting this out but it makes no difference to the performance). ImmediateMode is set to false.
The problem seems to be proportional to the number of columns. It also appears to be worse on subsequent runs - e.g. first time takes 10secs, subsequent times take 20secs.
For each run we create a new instance of the container and set it onto the Grid:
[code]
while(table.getHeaderRowCount() > 0) {
table.removeHeaderRow(0);
}
table.removeAllColumns();
table.getContainerDataSource().removeAllItems();
table.setContainerDataSource(resultContainer);
table.setFrozenColumnCount(1);
// Rebuild the multi-level column headers…
[/code]Any idea how I pin this down? As I said, the delay occurs after our code has completed, so I’m not sure how I debug this.
I’m using Chrome (51.0.2704.63 (64-bit)) and Vaadin 7.6.8 (I noticed the same problem with 7.6.4).