Thursday, March 31, 2011

Mobile Performance–Thunder from Down Under & Real Time Screen Snapshots

We’re lucky enough to a have a beta tester visiting Perth in Australia. He ran a few tests for us. Here’s one with real time Geo data and Carrier information:

Link to the performance data and a picture:

AU

And finally a brand few feature we’re adding. The ability to see exactly the web page you just tested on.

In this case we ran a test on Yahoo. They send down a page which is 320*2743 pixels – Here’s the actual timing information

screenshot_time_absolute = 1301563754654 ms
screenshot_time_relative = 127903 ms
screenshot_width         = 320 pixels
screenshot_height        = 2743 pixels
screenshot_description   = [Screenshot taken during WebKit onPageFinished event]

This screenshot took place at +127903 milliseconds during
the page load.

And here’s the screen snapshot:

Yahoo

Thursday, March 24, 2011

Mobile Performance–Twitter.com–Redirects

Fascinating HAR report (if you’re a techie). Here’s Twitter.com on Androids emulator (running our 5o9 Browser2).

Twitter Waterfall

Notice the first two waterfall entries? The first one is me requesting www.twitter.com in my browser. It then “redirects” to something called mobile.twitter.com – at first blush you think it’s just a simple redirect.

But you would be wrong. Only deeper analysis shows what the browser & Twitter are really up to. Start with the first webkit event… that’s me again going to http://www.twitter.com Then all of a sudden the browser starts loading “another page” which is http://twitter.com This time it never loads anything (no onLoadResource) event and then redirects me to http://mobile.twitter.com

Twitter HAR

So think about this for a moment in the context of “onPageFinished” which is typically what you look for to determine if the page has finished loading. If you did it this time you’d be wrong – because there are actually 2 onPageFinished events – one after the first redirect and the second after the THIRD redirect.

Wednesday, March 16, 2011

Mobile Performance–Above the Fold time. Thinking Differently

Joshua Bixby has a great post link which talks about this complex issue. It’s a big problem and in my opinion won’t be solved by a universal algorithm.

When we were working on the design of our Mobile Performance solution we thought long and hard about this issue. We thought about things like “time to first byte”, “time to first visible element” etc. But it became too complex, and too subjective. Everyone had a different idea.

So we thought differently.

To see what I’m talking about here are two links for you:

5o9 Cuzillion Web Page -

  • Do a right click and “view source” to see the custom timing events

Mobile Performance Report - HAR

  • This report was generated using our “Browser2” app for Android. Click on the HAR tab at the top of the page. Scroll down and read the _webkit_events - it tells you everything going on inside the browser

You can now set your own custom events at key places inside your HTML, CSS & JavaScript includes and see how everything interacts inside the browser.

Above the fold will not be solved with a universal algorithm. There simply isn’t one to support all the combinations. What is required is the ability to profile each page for each location, device and carrier in real time. And then use that data to deliver a better user experience.

Solving problems on Mobile is different – therefore think differently.

Tuesday, March 15, 2011

Mobile Performance Blaze.io vs. 5o9 Browser2

Just to be clear – let’s remain “hard on the problem” not on the people.

Mobile performance is a whole new bailiwick. In the coming months and years lots will be written and I’m sure there will be lots of “heated debates”.

Ultimately though it all comes down to your methodology. The title of this post is Blaze.io vs. 5o9’s Browser2. Two companies “two completely different approaches to testing”.

If you want, you can review Blaze’s methodology by going to this link In short they have a collection of Agents (they don’t define what an Agent consists of) that are running on actual devices. They all connect to a central server running webpagetest.org software. All of the Agents connect to the web via “dedicated high speed WI-Fi.

So to recap – There’s an actual device with a high speed Wi-Fi connection running an agent which talks to a central server running http://www.webpagetest.org/ software.

What’s missing?

The explanation of how, or rather whom gets the web page. If you look at webpagetest.org you will see that it’s designed to get web pages. So my “assumption” here is that the Agent is actually something like PCAP (http://pcapperf.appspot.com/) which is actually a packet sniffer that sits on a laptop (or server) and then when the “Agent” makes a request it reads the packets and generates a HAR report.

The key is whose getting the data? As we don’t know what the “Agent” is there’s no way of really telling.

Secondly it’s sitting on a Wi-Fi connection. This is NOT the same as a carrier connection.

Thirdly – we don’t know where the “Agents” are located. Are they all in the same building as the server or are they spread out around the country?

Again the “devil is in the measurement details”.

So now lets take a look at how 5o9’s Browser2 does it. Well first of all we’re a “browser” NOT an Agent. We sit on any Android device and can access the Internet both via Wi-Fi and 3G or 4G carrier networks. When we run a test we access not only device data, but also carrier information and real time geo-location data.

Note – Mobile is “well Mobile”. Testing in a building is NOT mobile.

Our test results – they’re published with all the same detail as Blaze’s except we add even more data. We’ve actually gone inside the browser and captured ALL of the webkit event messages. You can see a sample at this link. Click on the HAR tab at the top and you’ll see more detail than you ever imagined possible about what’s going on inside the Browser.

In short we’ve taken a “show me the data” approach to Mobile Performance.

As the inventors of Mod_Gzip we know a thing or two about Performance. At some point you have to “lay down” your cards and reveal the timing metrics.

Blaze.io does a great job. All they’ve done is taken a different approach to the measurement problem that’s all. Nothing wrong with that. Unless….

Remember “it’s all about the numbers”.

Mobile Performance–the tale of the tape

Running some tests this afternoon and thought that these results were interesting.

In case you’re in a hurry – Blaze.io’s results are nearly a second faster than a desktop browser on a 22mbps cable connection!

Methodology:

  • Test link – Steve Souders Cuzillion
  • Test browsers – latest version of Safari and Firefox
  • Performance apps – Web Inspector (Safari) & Firebug (latest version)
  • Connection – Comcast Cable 22mbps
    • Blaze.io – their network connection link 

#1 – Safari on an iMac i7

13 GET requests (2 errors) 20.59kbs of data in 4.63 seconds

Safari

#2 – Firefox on an iMac i7

10 GET requests (no errors) 12.6kbs of data in 4.62 seconds

Firefox

#3 – Blaze.io (link to actual test)

11 GET requests, 14.6kbs of data in 3.67 seconds

Blaze

Thursday, March 10, 2011

Mobile Performance Bing Vs. Google on AT&T on Android–Bing by a tenth!

And the winner is BING. Here’s the numbers

bing

13 requests, 306.8KB in 6.89 seconds and NO errors!

Google

google

11 requests, 130.5kb in 6.97 seconds but with 3 errors

What’s that tenth of a second worth? Well 1/2 a second is worth about a billion a year to Google. So a 1/10 of a second is probably worth a couple hundred million dollars.

Mobile Performance–Google Vs. Yahoo

As George Takei of Star Trek would say – Oh My!

Here’s Google’s Mobile home page – 3 JavaScript errors, but still gets the page loaded in a sub 7 second time frame.

Google

 

Now for Yahoo’s. Oh My!

83 requests, 390,000 bytes but it takes almost 30 seconds to get the full page loaded. In fact the page was so big I could not get the geo-location, carrier and device data on the same page. (I was using a Motorola Atrix 4G running on AT&T’s network for both tests)

 

Yahoo

Tuesday, March 08, 2011

Mobile Performance Really Matters–a quick use case

The other day the folks over at HTML5 Boilerplate (link) posted an update to their web site and Tweeted about it. I ran a quick performance test on it using our Android browser. Here are the “Before” results.

Items to note…

Real time: Geo-location, Device info, Carrier data, JavaScript errors. 42 GET requests, 1.7MB’s of data and almost 11 seconds to download

Before

So I sent them the Performance report. Well it didn’t take them long to fix things. Here’s the “After” results.

Items to note…

Real time: Geo-location, Device info, Carrier data, ZERO JavaScript errors. 14 GET requests, 264.8 KB’s of data and sub 8 seconds.

After

So what did they change?

In their own words… “Wait for domready to manipulate the DOM, lazyload videos + disqus, don't block the UI thread”

The moral of the story? Mobile Performance really matters and the only way you know that is to measure it from “inside the browser”.

Hats of to the HTML5 Boilerplate guys. Awesome job!

PS. Disqus and Google Analytics are still slowing things down. You could easily wipe off a few more seconds of that load time.

Thursday, March 03, 2011

Real Time HTTP Traffic Measurement for Android

Today we just released our beta version of “Browser2” for Android (2.1 and above). This allows you to measure, real time HTTP traffic from any web site.

In addition you can also include real time device information along with real time Geo-Location data.

In the next few weeks we’ll be adding support for the following:

  • The ability to automate performance testing via scripting (limited to a single domain)
  • The ability to support “js5o9.events” API call(s). In short you can create your own events, and use them as timers for anything you want. They’ll span all HTML, CSS and JavaScript Include documents so you can reference your own “events” at any point in the entire page load process

If you’d like a link to the beta please send me an email at peter.cranstone “@” 5o9inc.com