atom-lupa icon indicating copy to clipboard operation
atom-lupa copied to clipboard

performance is too bad

Open ghostfarmer opened this issue 8 years ago • 3 comments

hi, I JUST did a try, find that its basically slowing down my atom response, even I toggled it off. took a look at your code, I know its using react, but not sure what part is causing the poor performance.

ghostfarmer avatar Oct 28 '16 09:10 ghostfarmer

not sure what part is causing the poor performance. analysis is done in different repo and it performs advanced static analysis, so it can take long. But it should be done in separate process to avoid slowing atom (if this is really the case).

And long story short: the analysis was done in separate process, but I made some bad design decisions and then I was unable to put analysis in separate process anymore.

Good news is that I've lately rewritten module for static analysis from scratch, so I will be able to make analysis in separate process.

Bad news is that I've done this only partially, there is still work to do (it's very raw for now).

Good/Bad news is that I'm making some bigger project - namely my own IDE/editor for JavaScript, so I'm focused on that now (it can be good news because after that there will be new editor on JS scene which will have something like Lupa in it, but it can be bad news because my Atom package gets neglected)

But maybe in few weeks I will make a huge rewriting on this Atom package as well.

And If you really cannot stand performance in Lupa, you could use alternatives, e.g. https://atom.io/packages/symbols-tree-view

hex13 avatar Oct 28 '16 17:10 hex13

I've optimized a little bit.

  • cached some objects which was created constantly during analysis. It should help Atom to be responsive. Also it has decreased indexing time when I measured (project that was indexing 20 seconds now indexes 10-14 seconds).

  • previously doing simple global search (with ..) could freeze Atom on seconds. The cause was that there was too many objects to display (even thousands) and rendering them in React took time. Now when you perform global search results are limited to 100 first results, to avoid freezing (number is arbitrary

hex13 avatar Jan 31 '17 18:01 hex13

I've made another optimization. Previously analyzing was triggered in setInterval (every 1000 miliseconds). This was unecessary and caused e.g. lags when document was scrolled.

Now analyzing is triggered only after document in Atom has changed.

hex13 avatar Jun 07 '17 11:06 hex13