Hi Dave On Thu, Jun 16, 2016 at 6:48 PM, Dave Page <dp...@pgadmin.org> wrote:
> > > On Thu, Jun 16, 2016 at 1:43 PM, Akshay Joshi < > akshay.jo...@enterprisedb.com> wrote: > >> >> >> On Thu, Jun 16, 2016 at 6:09 PM, Dave Page <dp...@pgadmin.org> wrote: >> >>> >>> >>> On Thu, Jun 16, 2016 at 1:34 PM, Akshay Joshi < >>> akshay.jo...@enterprisedb.com> wrote: >>> >>>> >>>> >>>> On Thu, Jun 16, 2016 at 5:47 PM, Khushboo Vashi < >>>> khushboo.va...@enterprisedb.com> wrote: >>>> >>>>> >>>>> >>>>> On Thu, Jun 16, 2016 at 5:07 PM, Dave Page <dp...@pgadmin.org> wrote: >>>>> >>>>>> >>>>>> >>>>>> On Thu, Jun 16, 2016 at 12:19 PM, Khushboo Vashi < >>>>>> khushboo.va...@enterprisedb.com> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Thu, Jun 16, 2016 at 4:42 PM, Dave Page <dp...@pgadmin.org> >>>>>>> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Thu, Jun 16, 2016 at 12:04 PM, Akshay Joshi < >>>>>>>> akshay.jo...@enterprisedb.com> wrote: >>>>>>>> >>>>>>>>> Hi Dave >>>>>>>>> >>>>>>>>> On Thu, Jun 16, 2016 at 2:42 PM, Akshay Joshi <akshay.joshi@ >>>>>>>>> enterprisedb.com> wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, Jun 16, 2016 at 2:35 PM, Dave Page <dp...@pgadmin.org> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> Thanks, patch applied. >>>>>>>>>>> >>>>>>>>>>> However, whilst I was testing, I saw just how slow the tool is: >>>>>>>>>>> >>>>>>>>>>> SELECT * FROM pg_attribute >>>>>>>>>>> >>>>>>>>>>> In a PEM database, returns 8150 rows. In pgAdmin 3, this is >>>>>>>>>>> timed at 676ms on my laptop. In pgAdmin 4, the busy spinner runs >>>>>>>>>>> for approx >>>>>>>>>>> 5 seconds, then the whole UI freezes. I then have to wait a further >>>>>>>>>>> 3 >>>>>>>>>>> minutes and 46 seconds(!!!!) for the operation to complete. Once >>>>>>>>>>> loaded, >>>>>>>>>>> scrolling is very sluggish. >>>>>>>>>>> >>>>>>>>>>> Please make this your top priority - and if you have incremental >>>>>>>>>>> improvements, send them as you have them. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Sure. >>>>>>>>>> >>>>>>>>> >>>>>>>>> Below is my initial finding while running "SELECT * FROM >>>>>>>>> pg_attribute" on PEM database, returns 8498 rows: >>>>>>>>> >>>>>>>>> - Fetching data from the server side took consistent time and >>>>>>>>> it took 3-4 secs. >>>>>>>>> - Create/Render Backgrid without pagination : *1 minute* >>>>>>>>> - Create/Render Backgrid with pagination (50 items per page): >>>>>>>>> *469ms* >>>>>>>>> - Create/Render Backgrid with pagination (500 items per page): *3 >>>>>>>>> secs* >>>>>>>>> - Create/Render Backgrid with pagination (1000 items per >>>>>>>>> page): *6 secs* >>>>>>>>> - Create/Render Backgrid with pagination (3000 items per >>>>>>>>> page): *22 secs* >>>>>>>>> - Create/Render Backgrid with pagination (5000 items per >>>>>>>>> page): *36 secs* >>>>>>>>> >>>>>>>>> >>>>>>>> OK, so I guess diving into Backgrid is the next step. Are there any >>>>>>>> profiling tools that could be used? >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> Can we use infinity scrolling in case of no pagination? >>>>>>> >>>>>> >>>>>> How would add row work then? >>>>>> >>>>> >>>>> Yeah, in this case user has to wait till the last record to load. :( >>>>> Btw, I was thinking of https://github.com/bhvaleri/backgrid-infinator >>>>> >>>> >>>> This seems to be the good option. >>>> >>> >>> No - please see my previous comment. >>> >> >> We can add/paste row as top row of the backgrid. In that case will it >> be fine? >> > > It's a hack, it doesn't solve the underlying problem. The fact that it > took 4 minutes to load 8000 rows on my top-of-the-range MacBook Pro is not > good. > I have tried to fix the issue, but unable to figure out any way to do it . I have tried following options - Same issue found here https://github.com/wyuenho/backgrid/issues/126 Which will be fixed https://github.com/wyuenho/backgrid/pull/444. I have copied the backgrid.js and backgrid.css from "*perf*" branch replace it in our code, but faced so many error's and warning, fixed those but some how data is not rendered. - Another approach is instead of adding all the records to the backbone collection at once, I have added them in chunk of 500 records at a time and sleep for 500ms, in this case busy spinner won't run for a longer time as first 500 records gets rendered, but browser again goes into unresponsive state as CPU goes up to 98-99%. > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > -- *Akshay Joshi* *Principal Software Engineer * *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*