microsoft / RTVS

R Tools for Visual Studio.
MIT License
389 stars 118 forks source link

Optimize periodic evals #2158

Open int19h opened 8 years ago

int19h commented 8 years ago

There's a lot of code in the product that performs a full refresh, usually by means of R evals, whenever the global R state is considered refreshed - in particular, at every new REPL prompt. When working over remote connection, this can slow down operations significantly, with observable 1-2 second delays on every REPL input or debugger step.

We need to look at all code that subscribes to IRSession.Mutated event, and check for any patterns that result in unnecessary overhead. Some examples:

smortaz commented 8 years ago

+2!

On Monday, August 8, 2016, Pavel Minaev notifications@github.com wrote:

There's a lot of code in the product that performs a full refresh, usually by means of R evals, whenever the global R state is considered refreshed - in particular, at every new REPL prompt. When working over remote connection, this can slow down operations significantly, with observable 1-2 second delays on every REPL input or debugger step.

We need to look at all code that subscribes to IRSession.Mutated event, and check for any patterns that result in unnecessary overhead. Some examples:

  • Same component repeatedly fetching the same data more than once for a single Mutated event (VE does this a lot).
  • Different components fetching the same data separately (e.g. debugger, VE and Intellisense all fetch locals).
  • Fetching too much data in one request, instead of lazily loading it (package manager?).
  • Fetching too little data in one request, requiring immediate extra fetches for common operations (data grid when scrolling by row or by column).
  • Issuing independent requests sequentially (i.e. issue first, wait for completion, issue second, wait for completion) even though there's no data dependency between them, and they could be concurrent (i.e. issue first, issue second, await Task.WhenAll).

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/Microsoft/RTVS/issues/2158, or mute the thread https://github.com/notifications/unsubscribe-auth/AAtUVMdyMoZ6yrrYzJdwdhlWa8HyRMA8ks5qd7n1gaJpZM4JfkqC .