Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

How Fast Are Web Applications in 2016?

DZone's Guide to

How Fast Are Web Applications in 2016?

Users expect speed in web applications. Where does your application fall within the 500 measured?

Free Resource

Download our Introduction to API Performance Testing and learn why testing your API is just as important as testing your website, and how to start today.

In our last post we exposed the likelihood of users abandoning the operation due to poor performance. The correlation between the abandonment rate and the operation latency was clear. Two-fold increase in response time makes the user 63% more likely to abandon the operation.

This week we look at the same data set from the different angle. The goal is to understand how do applications behave in regards of latency. For those unfamiliar with the term: latency is the time a particular operation takes to complete from the start to finish. Examples of such operations include authentication, making a bank transfer or checking out a shopping cart.

As we exposed last week, poor performance is definitely contributing towards poor user experience. To see how the real-world applications actually perform, we analyzed the latency across applications monitored by Plumbr. The results are presented in the following table:

Duration % of transactions
Under 2 seconds 91.53%
2 – 4 seconds 2.78%
4 – 8 seconds 1.79%
8 – 16 seconds 1.41%
16 – 32 seconds 0.59%
More than 32 seconds 1.89%

The distribution is not too surprising – vast majority of transactions complete in under 2 seconds with less and less transactions in each following bucket.

But as averages can be deceiving, let us drill deeper by analyzing the distribution of the latency. For this let us examine the duration of 90%, 99% and 99.9% of transactions across the applications:

monitoring web application performance

To interpret the data above, let us look at the following examples:

  • For 78% applications, 90% of the transactions complete faster than 2 seconds.
  • For 66% of the applications, 99% of the transactions complete under 8 seconds.
  • For 52% of the applications, 99.9% of the transactions complete under 16 seconds.

Having this information helps to understand why looking at average and median response times can be really deceiving. The worst case latencies will not stand out in such metrics, leaving you in the dark for the users suffering the most.

The data becomes even more interesting if we couple it with the transaction abandoning likelihood:

 Duration of a transaction % of total transactions Likelihood to abandon Abandoning rate
< 2 seconds 91.53% 3.15% 2.88%
2 – 4 seconds 2.78% 6.78% 0.19%
4 – 8 seconds 1.79% 9.84% 0.18%
8 – 16 seconds 1.41% 14.07% 0.20%
16 – 32 seconds 0.59% 18.37% 0.11%
> 32 seconds 1.89% 33.91% 0.64%
Total abandoning rate: 4.19%

The data above couples abandoning rate with the data on the actual latency of the application. As a result we see that for a typical web application, 4.2% of the transactions are abandoned.

The data represents five billion user interactions with 500 different web-based applications. User interactions were monitored by Plumbr, capturing the event duration & result. Based on these events, we aggregated, cleaned and clustered the data. In the following posts we are going to expose the dataset itself along with a more in-depth analysis. To stay tuned, subscribe to our Twitter or RSS feeds.

Find scaling and performance issues before your customers do with our Introduction to High-Capacity Load Testing guide.

Topics:
java ,garbage collection

Published at DZone with permission of Nikita Salnikov-Tarnovski, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}