When it comes to justifying the value of web performance, you may have come across the phrase "The Next Billion Users". These are people living in emerging markets who are not currently online but will be over the coming years. As they join the web, many will have their experience hampered by the limited processing power of budget mobile devices and poor network connectivity – so this (I hope!) makes it an obvious business reason to invest in optimising performance and unlock the immense potential value in these markets.

However, for some companies, it's easy to dismiss this reason with the excuse that their business only sells to wealthy western markets.

Ignoring the fact that, even within developed countries, you will still have a wide range of affluence, rural areas with poor connectivity and people who do not care about or require the latest, greatest technology – you simply cannot trust the network, nor can you trust devices.

You cannot trust the (4G / WiFi) network

Last October, I was sat using my mobile to catch-up on some email and even with three-out-of-four bars of 4G, page loads were ~60 seconds! Note: this was on an iPhone 7+!

UK, 4G (3/4 bars), iPhone 7+ exhibiting ~60sec page loads (all sites were slow)



Proves: #perfmatters everywhere, not just emerging markets. pic.twitter.com/paDkFZ100L — Ryan Townsend (@RyanTownsend) October 14, 2017

Note: I'm not calling out The New Stack in the video above, this was one of many sites I tried.

Just because there's a strong wireless signal between a device and it's gateway, whether that's a cell tower or WiFi router, doesn't mean the backing hard-wired network isn't congested – I'm sure anyone who has attempted to use WiFi on a British train can relate!

It only takes a quick search of Twitter for "slow 4g" or "slow wifi" to see hundreds of people dealing with these scenarios.

"The network is reliable" is literally #1 of the Fallacies of Distributed Computing, it would be wise for us not to forget this.

You cannot trust devices

As 2017 was coming to a close, a controversial hidden 'feature' in iOS was discovered: Apple is throttling the CPU of iPhones to maintain battery life as they naturally degrade through use. I feel they had the best intentions with this, but it was invisible to the user, so they may be unaware that this throttling is occurring and blame individual websites for being slow.

Fast forward a mere month and the Spectre attack affects ARM, Intel and AMD CPUs, causing upto 20% degradation in processing power. After the iOS patch, Melvin Mughal's benchmarks on an iPhone 6 showed a 36-56% degradation in web-related tests, looking at the HTML5 Parse / DOM benchmarks, edit: unfortunately he's since taken the post content down due to personal attacks 😞 – if anyone has a source of web-specific benchmarks, please let me know.

These benchmarks may not perfectly represent real usage, but it's not looking good!

As if this situation isn't bad enough, there's another factor that is rarely considered: input lag. On top of variable CPU performance, we have to cater for hundreds of milliseconds of latency on interactions.

Device input latency – source: Dan Luu's post on 'Input Lag' Device Latency (ms) Year iPad Pro 10.5" pencil 30 2017 iPad Pro 10.5" 70 2017 iPhone 4S 70 2011 iPhone 6S 70 2015 iPhone 3GS 70 2009 iPhone X 80 2017 iPhone 8 80 2017 iPhone 7 80 2016 iPhone 6 80 2014 iPhone 5 90 2012 Blackberry Q10 100 2013 Huawei Honor 8 110 2016 Google Pixel 2 XL 110 2017 Galaxy S7 120 2016 Galaxy Note 3 120 2016 Moto X 120 2013 Nexus 5X 120 2015 OnePlus 3T 130 2016 Blackberry Key One 130 2017 Moto E (2g) 140 2015 Moto G4 Play 140 2017 Moto G4 Plus 140 2016 Google Pixel 140 2016

You'd expect devices to be improving over time, but they're not! The Pixel 2 XL, Google's flagship smartphone for 2017, is way up at 110ms and the iPhone X is 10ms worse than the archaic 3GS.

Even with the fastest devices, this doesn't give us a lot of time for executing JavaScript for things to feel instant (the accepted threshold being 100ms).

Finally, you might have noticed when you get to low battery, devices typically offer to enter 'low power mode' - this is a great feature, but will worsen CPU performance.

The Apple iPhone X has 6 CPU cores, 2 high-power and 4 'efficiency', and whilst I'm sure Apple has complex algorithms for this, you can bet that the high-power cores are avoided or even completely disabled in low power mode.

With the ever-increasing volume of JavaScript used on sites, you could have users on high-end smartphones or even desktops, no older than a couple of years, receiving a less-than-optimal experience - nobody is safe from this.

A vast portion of time is consumed parsing, compiling and executing JavaScript. The diagram below from Addy Osmani illustrates this well:

No more excuses

Poor device/network performance is indiscriminate: no matter the audience – web performance matters.

Some people certainly have it far worse than others, but any company making money on the web, regardless of the affluence of their users, has a responsibility to optimise their sites - the variability of the environment sites are accessed from might surprise you.

The wonderful thing about optimising sites is everyone benefits, no matter the device, network or environment.