What is the average mobile rating on Google PageSpeed Insights?

巧了我就是萌 提交于 2021-01-07 03:24:57

问题


We use Google PageSpeed Insights as a marketing tool to compare the download speed of websites we do with what our competitors do. But so many mobile sites are rated in the 30s and wondered if that's what the average mobile rating is. Does anyone know? Thx


回答1:


Short Answer

The average mobile rating is 31.

Long Answer.

An article I found after writing the below that answers the question

This article from tunetheweb has actually done the hard work for us here and gathered the data from httparchive. (give the article a read it has a wealth of interesting information!)

The below table taken from that article covers your question (the answer is 31 for the performance metric 50th percentile)

Percentile    Performance    Accessibility    Best Practices    SEO    PWA
10            8              56               64                69     14
25            16             69               64                80     25
50            31             80               71                86     29
75            55             88               79                92     36
90            80             95               86                99     54
95            93             97               93                100    54
99            99             100              93                100    64


I have left the below in as the information may be useful to somebody but the above answers the question much better. At least my guess of 35 wasn't a millions miles away from the actual answer. hehe.

My original Answer

You would imagine that a score of 50 would be the average right? Nope!

Lighthouse uses a log-normal curve to create a curve that dictates scores.

The two key control points on that curve are the 25th percentile for the median (a score of 50 means you are in the top 25% effectively) and the 8th percentile for a score of 90.

The numbers used to determine these points are derived from http archive data.

You can explore the curve used for Time To Interactive scoring here as an example.

Now I am sure someone who is a lot better at maths than me can use that data to calculate the average score for a site, but I would estimate it to be around 35 for a mobile site, which is pretty close to what you have observed.

One thing I can do is provide how the scoring works based on those control points so you can see the various cutoff points etc. for each metric.

The below is taken from the maths module at https://github.com/paulirish/lh-scorecalc/tree/190bed715a3589601f314b3c8a50fb0fb147c121

I have also included the median and falloff values currently used in this calculation in the scoring variable.

To play with it use either the VALUE_AT_QUANTILE function to get what value you need to achieve a certain percentage (so to see the value for the 90th percentile for Time To Interactive you would use VALUE_AT_QUANTILE(7300, 2900, 0.9); (take median (7300) and falloff (2900) from TTI in the scoring variable and then enter the desired percentile as a decimal (90 -> 0.9)).

Similar for QUANTILE_AT_VALUE function which does the reverse (shows the percentile that a particular value would fall at). E.g. if you wanted to see what percentile a First CPU Idle time of 3200 gets you would use QUANTILE_AT_VALUE(6500, 2900, 3200).

Anyway I have gone a bit off tangent, but hopefully the above and below will let someone cleverer than me the info needed to work it out (I have included the weightings for each item as well in the weights variable).

const scoring = {
  FCP: {median: 4000, falloff: 2000, name: 'First Contentful Paint'},
  FMP: {median: 4000, falloff: 2000, name: 'First Meaningful Paint'},
  SI: {median: 5800, falloff: 2900, name: 'Speed Index'},
  TTI: {median: 7300, falloff: 2900, name: 'Time to Interactive'},
  FCI: {median: 6500, falloff: 2900, name: 'First CPU Idle'},
  TBT: {median: 600, falloff: 200, name: 'Total Blocking Time'}, // mostly uncalibrated
  LCP: {median: 4000, falloff: 2000, name: 'Largest Contentful Paint'},
  CLS: {median: 0.25, falloff: 0.054, name: 'Cumulative Layout Shift', units: 'unitless'},
};

const weights = {
FCP: 0.15,
SI:  0.15,
LCP: 0.25,
TTI: 0.15,
TBT: 0.25,
CLS: 0.05
};



function internalErf_(x) {
  // erf(-x) = -erf(x);
  var sign = x < 0 ? -1 : 1;
  x = Math.abs(x);

  var a1 = 0.254829592;
  var a2 = -0.284496736;
  var a3 = 1.421413741;
  var a4 = -1.453152027;
  var a5 = 1.061405429;
  var p = 0.3275911;
  var t = 1 / (1 + p * x);
  var y = t * (a1 + t * (a2 + t * (a3 + t * (a4 + t * a5))));
  return sign * (1 - y * Math.exp(-x * x));
}

function internalErfInv_(x) {
  // erfinv(-x) = -erfinv(x);
  var sign = x < 0 ? -1 : 1;
  var a = 0.147;

  var log1x = Math.log(1 - x*x);
  var p1 = 2 / (Math.PI * a) + log1x / 2;
  var sqrtP1Log = Math.sqrt(p1 * p1 - (log1x / a));
  return sign * Math.sqrt(sqrtP1Log - p1);
}

function VALUE_AT_QUANTILE(median, falloff, quantile) {
  var location = Math.log(median);
  var logRatio = Math.log(falloff / median);
  var shape = Math.sqrt(1 - 3 * logRatio - Math.sqrt((logRatio - 3) * (logRatio - 3) - 8)) / 2;

  return Math.exp(location + shape * Math.SQRT2 * internalErfInv_(1 - 2 * quantile));
}


function QUANTILE_AT_VALUE(median, falloff, value) {
  var location = Math.log(median);

  var logRatio = Math.log(falloff / median);
  var shape = Math.sqrt(1 - 3 * logRatio - Math.sqrt((logRatio - 3) * (logRatio - 3) - 8)) / 2;

  var standardizedX = (Math.log(value) - location) / (Math.SQRT2 * shape);
  return (1 - internalErf_(standardizedX)) / 2;
}

console.log("Time To Interactive (TTI) 90th Percentile Time:", VALUE_AT_QUANTILE(7300, 2900, 0.9).toFixed(0));
console.log("First CPU Idle time of 3200 score / percentile:", (QUANTILE_AT_VALUE(6500, 2900, 3200).toFixed(3)) * 100);


来源:https://stackoverflow.com/questions/64919622/what-is-the-average-mobile-rating-on-google-pagespeed-insights

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!