Hi Dave, The grid was being re-rendered after add new row and copy/paste to add a blank row in the end of grid, but in case of copy/paste batch operation it should run once, so that code is moved out of addNewRow(...) and put into a function grid.addBlankRow() and called separately for copy/paste after batch operation is completed.
Now copy/paste with 10k records took 2 seconds. Please find attached patch. On Mon, May 29, 2017 at 5:19 AM, Dave Page <dp...@pgadmin.org> wrote: > On Sun, May 28, 2017 at 1:25 PM, Harshal Dhumal > <harshal.dhu...@enterprisedb.com> wrote: > > Hi, > > > > This commit has some performance issues with row paste functionality. > > For 2K copied rows with 3 columns (2 integer and one null column) it took > > near about 10 seconds to complete paste operation. And entire application > > becomes unresponsive for those 10 seconds. > > > > This is mainly because for each single pasted row entire grid is > re-rendered > > ( is what I see in code). > > Ideally grid should be re-rendered only once after all rows are provided > to > > grid. > > > > below code snippet from _paste_rows function > > > > _.each(copied_rows, function(row) { > > var new_row = arr_to_object(row); > > new_row.is_row_copied = true; > > row = new_row; > > self.temp_new_rows.push(count); > > grid.onAddNewRow.notify( > > {item: new_row, column: self.columns[0] , grid:grid} > > ) > > grid.setSelectedRows([]); > > count++; > > }); > > > > The statement > > > > grid.onAddNewRow.notify( > > {item: new_row, column: self.columns[0] , grid:grid} > > ) > > > > causes grid to re-render (as we listener on onAddNewRow event where we > > re-render the grid) > > Copying that number of rows is an extreme case of course, but still... > Is there an alternative way to batch notify? > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company >
render_grid_after_batch_copy_paste_rows.patch
Description: Binary data
-- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers