SELECT type, pages, avg, min, first, tenth, twentieth, thirtieth, fortieth, median,
sixtieth, seventieth, eightieth, ninetieth, ninety_ninth, max
FROM
(SELECT
'desktop' type,
COUNT(*) pages,
AVG(((bytesTotal / 1024)/(fullyLoaded / 1000))) avg,
MIN(((bytesTotal / 1024)/(fullyLoaded / 1000))) min,
NTH(1, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) first,
NTH(10, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) tenth,
NTH(20, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) twentieth,
NTH(30, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) thirtieth,
NTH(40, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) fortieth,
NTH(50, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) median,
NTH(60, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) sixtieth,
NTH(70, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) seventieth,
NTH(80, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) eightieth,
NTH(90, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) ninetieth,
NTH(99, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) ninety_ninth,
MAX(((bytesTotal / 1024)/(fullyLoaded / 1000))) max
FROM [httparchive:runs.latest_pages]),
(SELECT
'mobile' type,
COUNT(*) pages,
AVG(((bytesTotal / 1024)/(fullyLoaded / 1000))) avg,
MIN(((bytesTotal / 1024)/(fullyLoaded / 1000))) min,
NTH(1, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) first,
NTH(10, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) tenth,
NTH(20, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) twentieth,
NTH(30, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) thirtieth,
NTH(40, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) fortieth,
NTH(50, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) median,
NTH(60, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) sixtieth,
NTH(70, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) seventieth,
NTH(80, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) eightieth,
NTH(90, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) ninetieth,
NTH(99, quantiles(((bytesTotal / 1024)/(fullyLoaded / 1000)), 101)) ninety_ninth,
MAX(((bytesTotal / 1024)/(fullyLoaded / 1000))) max
FROM [httparchive:runs.latest_pages_mobile])
I always wondered what could be a good “page speed” metric. Since most pages have a few kbytes of payload and take a few seconds to load kbps (kilobytes per second) could be a good metric. The query above shows the “page speed” in kbps quantiles as well as min, max, avg and count for both desktop and mobile pages.
Desktop vs Mobile aren’t comparable until 2013-06-15 as WebPageTest was running unthrottled wifi over Fiber for Mobile as discussed in this tweet. Hopefully next dump we get more precise with emulated 3G network for mobile.