Why is the web so slow?
calendar.perfplanet.com
calendar.perfplanet.com
* It is additive. It is necessary for just one component in the chain to add latency (monitor refresh, uncompressing, a bad cable modem, a bad router in the path, overloaded server, bloated JS code in the page). It is very hard to remove (one can argue impossible, but I am thinking of a multi-path set up with redundant hardware or network connections)
* Even though we can process teraflops per second on home GPU cards, our websites load about as a fast as they did 10 years ago.
* Border-line imperceptible UI or audio latencies still lead to bad user experience. They might not even know why they don't like it but in an A/B test they would pick the faster more response one. This was the case with Android vs Apple up until not too long ago. Even tiny UI jerkiness is enough to annoy a large number of users.
* OS and whole software stacks are usually designed for improved throughput not low latency processing. It takes tuning (proc and sys params) or even installing a special kernel to get better latency support for low level code.
* More benchmarks also measure throughput more than latency. Software is often picked and compared based on throughput, latency is second citizen most often. In a sequential setup for example, the two are compliments of each other, the more requests per second, the lower the latency of each request. It is only in concurrent and parallel contexts when latency starts to behave widely different. Send 100 requests at the same time towards the server? What happens? Do 50 get processed in 1ms but the rest block for 25ms?
* Low latency and liveliness has to be baked into the innards of the system/VM/framework. Depending on what is picked (and it often is picked based on throughput) a lot of time might end up being wasted fighting latency in a highly concurrent situation.
In ui development, we recognize things like responsiveness and fluidity, and something as clearly different as 60fps v 30fps is conjures a very clear picture in our minds, but most people are not versed in such language.
† also available on my Mac right now, even though the finger is on the touchpad instead of the screen, the scrolling response is instantaneous.
"More benchmarks also measure throughput more than latency.": Yup, latency benchmarks are really very hard, especially when humans are involved (UI/UX), due to biases and the way perception and cognition quite often try to adapt sparing us "the worst of latency" but at the same time leave us with a gut feeling of "lag". The journey J. Carmack undertook to find and work around latencies for the Oculus Rift is good example for all this, i think. You can't do this for each and every app to give all users this "snappy" feeling... especially when a huge system like "the internet" is involved.
I believe there is also "latency creep": even if "a system" has low latency at the beginning, operating it, maintaining it and especially scaling it will more easily accept increased latency than lower throughput... up to an threshold of course when the system becomes "apparently and unbearably slow" (still not the case for google, facebook etc. i guess)
Add servers to a farm because the median req. latency increased by 30%? Hmm...
Add servers to a farm because the number of users increased by 30%? Sure! ;)
So most probably facebook, yahoo etc. are missing serious absolute latency SLAs [1] and those huge organizations as a whole tend to neglect them until things break... they don't care about "slow(ish)".
[1] http://en.wikipedia.org/wiki/Service-level_agreement
ps: it's "funny" to see the gaming big-biz industry fighting this: they are huge organizations willing to accept "slow" if the money comes in right, at the same time some of them are in a market where the customers are much more sensible to this issues than the typical facebook is slow poster.
Very good point. I'll have to steal that phrase. Latency is additive in the system but also over time usually. Prototypes look good from then on it is usually just API layers, paths and more code on top. Those usually add latency to the stack.
Thinking about it, maybe to ensure some latency awareness we should adapt the "timeout-exception" concept in areas it is not used today. Given some runtime-lib support call sites in a project could be given a timing threshold to complete their work... if the threshold is exceeded an exception could break the code-flow in a specially prepared build of the project. In very modern dynamic environments ;) such thing could be implemented by transparently wrapping the call sites (via attributes, annotations, monads etc), in more traditional env. the compiler could generate specially adapted code measuring the latency using the high precision timers most CPUs provide...
Well, they are also 10x the size of what they were 10 years ago, with all the new fangled assets, large images, etc.
>OS and whole software stacks are usually designed for improved throughput not low latency processing. It takes tuning (proc and sys params) or even installing a special kernel to get better latency support for low level code.
Well, I don't think that has anything to do with the web latency as perceived client side. 99% of the lag/slowness is (should be?) because of network latency, not because the OS/browser is slow to receive and render.
Complete assets of...
"google.com": 1,09MB
"bing.com": 332,95KB(!)
"yahoo.com": 1,84MB (1,47MB with ADblock)
I was actually estimating more than 10x, due to the heavy use of linked JS, CDNs and whatnot, but I would say it's actually quite correct (I checked other websites I use with similar results, so I didn't post it here).I was actually quite surprised by bing here, though google adds around 300k (which is the size of the whole bing assets) for the doodle in my country.
Not to mention the background image in the bing homepage as well.
Well played bing...
CDNs appear to be messing with performance in ways that aren't really transparent to users or content providers.[1]
We need better tools than speedtest sites. We need a way to see an ISP's provision of popular sites over time.[2]
Or just encrypt everything and bounce it through proxies or route anonymizers, make that standard. Either way.
[1] http://mitchribar.com/2013/02/how-to-stop-youtube-sucking-wi... ; http://www.reddit.com/r/technology/comments/13kmvd/have_time...
[2] http://www.youtube.com/my_speed may be an example worth following for Netflix, Vimeo.
Yep, that'll speed things up
If you can optimise your applications under those conditions you know its going to be gravy for those without lots of hops. The problem is that developers have very fast computers AND are usually a very short hop count from their deployment servers. They make really bad testers.
https://www.evernote.com/shard/s74/sh/f033a734-455b-427a-90a...
SF: Is there something that I'm missing that isn't shitty comcast? (And I'm not eligible for Webpass, though I can dream)
"Why are Canadians so rude"
"Why are Canadians so friendly"
And I'm suddenly reminded of Jay Leno's "Jaywalking" segments. And my guess is that for the majority of these queries, it's because the person has 7 different toolbars loaded into IE. IE8 if we're lucky, but probably IE7. Maybe IE6. Plus they probably have a ton of autostart crap on their computer and don't know how to differentiate between "my computer is slow" and "the web is slow."
The amount of worthless crap that comes with a simple web page where only a bit of text is relevant is staggering.
It directly affects usability and therefore user engagement. And that means it directly affects the bottom line for most companies.
But most companies fail to see or ever really do anything about it.
For example, why is It that almost no site uses appcache, when it is a way of ensuring that resources are already local and the only network traffic is the truly essential part? Why do we care about retina imagery, when it is obvious that the majority of users get a worse experience as a consequence? Why have sites doubled in size in two years time without adding a meaningful percentage in content?
These all point to an industry that lacks perspective on their user's actual user experience because they are sitting on a nice fiber line two hops from the server.
HTTP caching is fine for that. appcache is more about allowing the site to largely work even after going offline. That's more than most sites need.
The reasoning behind this is a wish to avoid annoying or "unestethical" flicker from one font to another once the font has loaded.
That's great if you're on 10mbps or more.
Now put yourself on a 64kbps barely functioning link on the metro, you have DLed the 800bytes of article text you really want read 5 minutes ago but you're still waiting for that one special font which webkit requires to be able to see anything. And that wont fully load until you're off the metro.
I tell you: Lesser things can drive a otherwise reasonable person completely mad.
Don't use custom fonts on any mobile stylesheet ever. Thanks.
And maybe some things are fast enough, but nobody searches for "why is my computer fast enough" or "why is my brain too fast"
Streaming essentially disables fast travelling and teleporting to some extent, but makes slow travelling seamless and much, much more enjoyable. World of Warcraft was among the first online games to get it about right at launch, and I'm pretty sure the absence of loading screens was a huge factor in its universal acclaim.
(the OP contains: http://lognormal.net/boomerang/config.js)
I don't think it's a great idea, but in some case it would sort of force everyone to make content that is just lighter.