Tempo de carregamento da página com JavaScript

Eu estou procurando uma maneira adequada para testar o tempo que leva uma página para carregar totalmente todos os seus recursos. O que eu fiz até agora é adicionar:

window.startTime = (new Date).getTime(); // after the title in my page

E

window.onload = function () {
    console.log((new Date).getTime() - window.startTime);
}
window.addEventListener('load',function () {
    console.log((new Date).getTime() - window.startTime);   
},false);

Caminho para baixo no rodapé. Esta é uma boa maneira de medir? Poderia haver diferenças entre o tempo de carregamento e o tempo de carregamento percebido? Pelo que estou vendo, os eventos são acionados depois que todos os recursos foram carregados, incluindo imagens. Existem diferenças entre os dois eventos? Também posso usar o PageSpeed ​​para testar isso? (Eu sei que posso fazer isso no chrome dev tools, mas também quero um script para que eu possa acompanhar os dados.)

questionAnswers(6)

yourAnswerToTheQuestion