Como medir o tempo de inicialização do Firefox?

7

Eu gostaria de medir quanto tempo leva para alguns softwares começarem.

Eu sei o comando time mas no caso do firefox (iceweasel para mim no Debian), este comando imprime apenas a hora em que eu abro o firefox. Se eu iniciar:

$ time iceweasel www.google.com

Eu terei um tempo de inicialização somente depois que eu fechar o firefox e desta vez apenas indicarei por quanto tempo deixei o firefox aberto. Por exemplo:

real    0m50.565s
user    0m4.276s
sys 0m0.248s

Como posso saber exatamente quanto o Firefox precisa iniciar?

    
por ppr 04.02.2015 / 19:20

4 respostas

5

Isso é hacky e não-scriptável.

O Firefox pode executar javascript via linha de comando da seguinte forma:

firefox "javascript:alert(Date.now())"

Isso abrirá o Firefox e executará o javascript, exibindo uma caixa de mensagem contendo o tempo atual da época até o milissegundo.

Você pode obter o número de milissegundos decorridos no tempo de época em sua linha de comando com

date +%s%N | cut -b1-13

Então, para responder à sua pergunta, execute

date +%s%N | cut -b1-13; iceweasel "javascript:alert(Date.now())"

Em seguida, subtraia o número no seu terminal do número no Firefox. Isso dá a você o número de milissegundos que o Firefox levou para abrir e exibir alguns javascript básicos.

Fontes:

por 04.02.2015 / 20:55
2
  1. inicie um netcat de escuta em segundo plano
  2. chame o firefox para conectá-lo
  3. aguarde com wait bash embutido.
  4. finalmente matar tudo %código%
por 05.02.2015 / 00:19
2

Você pode usar alguma ferramenta que pode obter o id da janela associado ao PID e esperar até que essa janela seja criada. O ID do processo do programa iniciado anteriormente está disponível na variável $! .

Como exemplo - usando wmctrl pode-se obter uma lista de todas as janelas e verificar se alguma delas foi iniciada por determinado PID:

$ wmctrl -lp
0x00e00003 -1 397    jjmach sawfishpager
0x01200003  6 399    jjmach wmctrl -lp jimmij@jjmach: /proc
0x0180004b  0 655    jjmach [email protected]
0x02800078  7 680    jjmach How to measure Firefox's startup time? - Mozilla Firefox

O ID da janela está na primeira coluna e o ID do processo está em terceiro, portanto, precisamos canalizá-lo para awk para verificar se o ID do processo possui uma janela associada.

wmctrl -lp | awk -v pid="$!" '$3==pid{print "Window is created with id "$1}'

Agora, precisamos colocá-lo em algum loop e medir o tempo até que o comando acima termine com sucesso:

firefox & time (while wmctrl -lp | awk -v pid="$!" '$3==pid{exit 1}'; do :; done)

Portanto, iniciamos o firefox e imediatamente iniciamos um loop que no corpo não faz nada ( : ) e termina quando awk retorna valor diferente de zero.

    
por 05.02.2015 / 18:23
1

Você pode ler o tempo de inicialização medido a partir da configuração (about: config):

browser.slowStartup.averageTime

    
por 04.06.2016 / 20:45