Eugeni's blog

One blog to rule them all. Kinda.

Browsing the topic firefox

Um pequeno truque para melhorar a velocidade do startup do firefox:

/usr/bin/firefox:

#!/bin/bash
# Preloads and starts firefox

# preload profile for faster in-memory access
tar cf /dev/null $HOME/.mozilla/firefox --exclude '*/Cache/*'

exec /usr/local/firefox/firefox $*

Com isso, o perfil do firefox é carregado na memória antes de iniciar o executável, o que evita diversos seeks que ele faz. E, como já é bem conhecido :) , os seeks dos discos ATA/SATA são responsáveis por  mais de 70% de perda de desempenho de I/O.

Update: o firefox 3 também utiliza sqlite3 para muitas coisas. Com o passar do tempo, entretanto, a base dele tende a aumentar para infinito. Mesmo limpando o histórico, cache, dados de privacidade, etc, o arquivo do BD continua muito fragmentado – o que, por sua vez, resulta em muitos seeks desnecessários.  Para otimizar isso, de tempos em tempos (com firefox desligado) dá para rodar esse script:

 find $HOME/.mozilla/firefox -type f -name ‘*.sqlite’ -exec sqlite3 {} vacuum \;

Isso vai desfragmentar todos os arquivos .sqlite do firefox (places, saved forms, favicons, etc). Se o seu firefox dá umas travadas periódicas ao tentar digitar algum endereço, ou ao mostrar os bookmarks, ou simplesmente começa a mexer no disco sem nenhum motivo aparentente, você definitivamente precisa rodar esse comando!

Continuando a temporada de lançamentos, nesse fim da semana saiu Firefox 3 RC1. Com isso, podemos dizer que nas próximas semanas (de acordo com o cronograma de Mozilla), vamos ter a versão final do Firefox 3.0.

Eu estou usando ele desde o fim do ano, nas versões conhecidas como “nightly” (com codenome “minefield“) – são as versões compiladas diariamente. Isso tem lados positivos e negativos – entre os positivos, o desempenho dessas versões geralmente é significativamente superior ao das mais oficiais. Entre os negativos – vire e mexe algo para de funcionar (por exemplo, gmail, acentos, teclado, etc, etc). Mas em geral eu gostei da experiência que eu tive com os nightlies.

Porém, recentemente – já faz aproximadamente 1 mês -  ele tem 2 problemas extremamente irritantes:

  1. O acesso ao chrome (i.e., páginas “internas” do browser) foi desabilitado. Com isso, extensions como yardvark (para remover partes das páginas – tipo banners, fontes ilegiveis, etc) e webdeveloper (caixinha mágica dos web-developers :) ) pararam de funcionar. Enquanto o webdeveloper – de acordo com o site do seu criador – ainda tem esperança, o outro aparentemente não vai ser atualizado no futuro previsível…
  2. Os atalhos (alt-número) para trocar de tabs pararam de funcionar de vez no Linux. Isso é mais de que irritante. Inclusive eu achei o commit que quebrou isso, mas, apesar da minha experiência com o código do mozilla, não estou nem um pouco animado a mexer com isso.. hehehe

Mas, fora isso, o desempenho dos nightlies é mais de que suficiente, e qualidade de renderização também.

E, por falar em desempenho.. Acredito que muitos já perceberam que o Firefox para windows ganhou um speedup de até 4x na renderização de páginas, javascript, e funcionamento em geral. Tudo isso foi possível graças ao PGO (profile-guided optimizations) – técnica nova que apareceu nas últimas versões do GCC (junto com uma multidão de problemas, o gcc também trouxe coisas boas nas versões mais recentes :) ). Entretanto, só versões para windows são compiladas com esse suporte; as de Linux não.

Eu tentei dar uma chance a essa técnica – já que o Arch Linux, que estou usando no último ano-e-pouco, tem facilidade muito grande para criação de pacotes otimizados. E, realmente, a diferença de desempenho é MUITO grande. Não vou colocar nenhum benchmark nem nada aqui, só a minha opinião subjetiva. E ela é:

LIGUE JÁ O PGO!

hehehe.

(se você quer ver um benchmark, dê uma olhada aqui por exemplo -Firefox 3 ainda mais veloz | Open Mania).

E é isso. De forma geral, o firefox 3 parece ser muito melhor que o 2, vamos esperar o release final!