Measuring user blocking time, and classifying them.

One of the frequent complaints from our intellij users is it is slow, unresponsive.

We cannot classify Intellij UI slowness events based on just  response time. (ie, we cannot simply say any UI response >1 second is  a slow event). User expectations play a major role in classifying  whether UI response is acceptable or not. Here is snip from Improving Interactive System Performanceusing TIPME
Given  two operations with the same response time, the user’s definition of “  acceptable” depends heavily on the user’s expectation. Users are  surprisingly forgiving when they are waiting for operations they expect  to take a long time but are unforgiving when an operation that they  expect to complete quickly does not. For example, a user would happily  wait for 5 seconds for a program to start up, but the same user would be  irritated waiting just one second for a character that s/he typed to  echo.

Similar is the  case with Intellij users. When users are typing code or switching  tabls, users expect intellij to respond quickly. Instead, if Intellij  starts indexing in foreground blocking UI thread, as users did not  expect this kind of slow response during typing code/switching tabs they  get irritated.
Where as during project refresh/indexing,  users are aware that Intellij takes time - so, to a certain extent these  delays are acceptable to users.

Whenever UI is not responsive we can say user is blocked. We can classify these blocked times as follows:

1. Anticipated Vs. un-anticipated block times:

Examples for anticipated block times: project creation, refresh etc are anticipated blocking events. Users know that till project creation or refresh is completed they cannot do much.
Examples for un-anticipated block times: Intellij indexing in foreground blocking UI thread when user is switching tabs, coding etc. User never expects UI to hang when he/she is typing code or switching tabs.

2. Acceptable Vs. un-acceptable block times:

Example for acceptable block times: Indexing a 100-200 files projects <1 min.
Examples for un-acceptable block times: Indexing a 100-200 files projects taking >10mins. [anything which is not norm.]

Eliminating un-anticipated block times, reducing un-acceptable block times improves user experience a lot.

I would like to know whether jetbrains has any framework which collects these kind of metrics. What would be best approach to built such a capability in Intellij - is it through a plugin or by enhanching community edition code?


Please sign in to leave a comment.