Bądź: Wyszukaj na stronie z użyciem Google
reklama:

niedziela, 14 czerwca 2009

Przyśpieszamy uruchamianie Firefoksa optymalizując bazę SQLite

Autor: , 09:22, niedziela, 14 czerwca 2009


Firefox, szczególnie ten uruchamiany na Linuksie, nie jest demonem prędkości. Nie oznacza to jednak, że nie możemy nic zrobić aby poprawić jego osiągi. Pokażę prosty sposób, który sprawi, że aplikacja będzie się szybciej uruchamiała.

Nasza optymalizacja będzie się opierała na posortowaniu i usunięciu z bazy SQLite, której Firefox używa do zapisywania wewnętrznych danych, pustych komórek. Do operacji użyjemy skryptu, który do działania wymaga SQLite w wersji przynajmniej 3.0. Jeśli takowej nie posiadasz, można ja wgrać poleceniem:
sudo apt-get install sqlite3
1) Następny krok to stworzenie skryptu o którym pisałem wcześniej. Wpisujemy zatem w konsoli:
gedit ./ffast
teraz wklejamy do okna edytora kod naszego skryptu:
#!/bin/bash

username=$(whoami)
proc="$(ps aux | grep $username | grep -v $0 | grep firefox | grep -v grep)"
if [ "$proc" != "" ]
then
echo "shutdown firefox first!"
exit 1
fi

curdir=$(pwd)

for dir in $(cat ~/.mozilla/firefox/profiles.ini | grep Path= | sed -e 's/Path=//')
do
cd ~/.mozilla/firefox/$dir 2>/dev/null
if [ $? == 0 ]
then
echo "i'm in $(pwd)"
echo -e " running...\n"

for F in $(find . -type f -name '*.sqlite' -print)
do
sqlite3 $F "VACUUM;"
done

echo -e "done in $(pwd) ...\n"
else
echo -e "\n !!!! Error while entering directory $dir !!!!\n"
fi
done
echo "Job finished";

cd $curdir

3) Następnie nadajemy skryptowi prawa do uruchomienia:
chmod +x ./ffast
4) I po zamknięciu Firefoksa uruchamiamy skrypt:
./ffast
Powinien chwile popracować i zwrócić mniej więcej taki wynik:

Informacje o tym skrypcie przysłał mi czytelnik Koliberek, który napisał, że u niego powoduje to duże przyśpieszenie uruchamiania przeglądarki. U mnie niestety efekt nie był już tak dobry, żeby nie napisać, że wcale go nie było. Skoro jednak u niektórych powoduje do przyśpieszenie uruchamiania, możliwe, że również jesteś w tym gronie - nie zaszkodzi spróbować.

źródło: onlyubuntu.blogspot.com
Komentarze 29 comments
mekk pisze...

Jakieś pomiary efektów? Bo nie chce mi się wierzyć, że są zauważalne...

Anonimowy pisze...

Najlepszym sposobem na sprawienie zeby FF3 latal jest zmiana systemu plikow na ext4 (jesli ktos ma laptopa to najlepiej bez jurnalingu), niedawno zmienilem z ext3 i od tego czasu nie poznaje liska - prawdopodobnie wlasnie dostep do bazy sqlite jest waskim gardlem na linuxie.

sake12 pisze...

Z początku byłem trochę sceptyczny, ale...
Ten skrypt na prawdę działa! Teraz FF uruchamia mi się w jakieś 4-5 sekund...

Anonimowy pisze...

Nie widzę jakiejś specjalnej różnicy...

Anonimowy pisze...

U mnie widać ogromną różnicę (z ~9s na ~5s), polecam!

Anonimowy pisze...

U mnie nie widać różnicy, ale rozwaliło mi totalnie zakładki w Delicious - niektóre tagi całkowicie usunęło, a pozostałym zakładkom losowo pozamieniało tagi... Musiałem ponownie pobrać z serwera(na szczęście zniszczenia dotyczą wyłącznie lokalnych zakładek a nie tych na serwerze...)

Piotrek pisze...

Szybciej może się uruchamia, wynik może byłby lepszy gdybym miał stabilną wersję Firefoxa :)

Anonimowy pisze...

Po odpaleniu skryptu wywalilo mi:

SQL error: database disk image is malformed
SQL error: constraint failed
done in /home/wisnia/.mozilla/firefox/5ifithy0.default ...

Job finished

Czy ktos wie o co chodzi?

xeros pisze...

Mi ten skrypt przyciął wszystkie pliki .sqlite w profilu firefoksa, które zajmują teraz tylko 1/3 poprzedniej wielkości. Efektów ubocznych jak narazie nie zauważyłem. Nie sprawdzałem ile czasu na uruchamianie zyskałem, ale mam wrażenie, że uruchamia się szybciej i mniej ramu zabiera. (używałem tego samego profilu od wersji 1.0 lub 1.5)

Anonimowy pisze...

SQL error: database disk image is malformed

znaczy to tyle, że plik bazy danych jest uszkodzony.
jeżeli działa Ci w miarę dobrze lisek to go nie ruszaj, a jeżeli się krzaczy to powinieneś odzyskać co się da i stworzyć nowy profil.

u mnie skrypt trochę przyspieszył odpalanie.

Anonimowy pisze...

Jak szukałem sposobu przyspieszenia ff to znalazłem coś takiego

for f in ~/.mozilla/firefox/*/*.sqlite; do sqlite3 $f 'VACUUM;'; done

prostsze a działa podobnie.
http://weblog.savanne.be/153-performance-tip-of-the-day

Mite pisze...

Jak czytam opinie to az boje sie testowac...
Niektorzy mowia ze wszystko ok, inni ze skrypt cos miesza...

Co do FF to faktem jest ze na Linux dziala ociezale, niestety, ale twórcy troche olewaja tersje na ten system.
Pod Linux zdecydowanie najszybsza i najstabilniejsza w tej chwili przegladarka jest Opera, przynajmniej moim zdaniem. Jedyny problem jest taki ze wciaz wiele stron nie spelnia standardow sieciowych i przez to moga zle dzialac pod Operka ale da sie przezyc - zawsze mozna problematyczna strone odpalic w czym innym, a problem jest mniej wiecej w 10% przypadkow wiec nie jest az tak bardzo zle ;)

Anonimowy pisze...

jestem w szoku, niespodziewalem sie takiej poprawy teraz ff uruchamia sie w sekunde ;]

nofink pisze...

'Najlepszym sposobem na sprawienie zeby FF3 latal jest zmiana systemu plikow na ext4 (jesli ktos ma laptopa to najlepiej bez jurnalingu), niedawno zmienilem z ext3 i od tego czasu nie poznaje liska - prawdopodobnie wlasnie dostep do bazy sqlite jest waskim gardlem na linuxie.'
mam ext4 i firefox chodzi jak chodzi...czyli wolno. Mi pomogla zmiana na opere 10 :E

ups5 pisze...

"Mi pomogla zmiana na opere 10 :E"
Sam nawet poużywałem ostatnio Opery, ze względu na mulenie. Testowałem ostatnią stabilną i wersję beta Opery. Ale niestety są problemy z niektórymi serwisami. Ot na przykład Notatnik od Googla nie działa. Można wyświetlić notatki, ale nie da się stożyć nowej czy wyedytować już istniejących. Zresztą z Readerem też działa na słowo honoru.

Ubumastah pisze...

U mnie działa. Trudno mi powiedzieć o ile firefox przyspieszył, ale u mnie różnica jest zauważalna. Firefox u mnie uruchamia suę błyskawicznie :)

Anonimowy pisze...

Potwierdzam uruchamia się szybciej. Dzięki wielkie

Anonimowy pisze...

ext4 + prelink + preloader + jak w temacie i naprawde jest spoko . Polecam! zyskalem jakies 2-4 sec . brak zauwazalnych skutkow ubocznych jak do tej pory - kilka uruchomien :)

Anonimowy pisze...

Jest szybciej.Dzięki.

Anonimowy pisze...

U mnie wyraźnie zauważalne przyśpieszenie

Marek Dominiak pisze...
Ten komentarz został usunięty przez autora.
Marek Dominiak pisze...

U mnie minimalne przyśpieszenie.

elkanguro pisze...

U mnie skrypt wykonał wszystko bez błędów jednak różnicy w szybkości uruchamiania nie zauważyłem. Na szczęście nie dostrzegłem także efektów ubocznych.

Anonimowy pisze...

100% działa , dzięki bardzo

Anonimowy pisze...

U mnie skrypt wydał co prawda błąd "SQL error: attempt to write a readonly database", ale zakończył działanie jak w opisie i efekt dał piorunujący. Lisek uruchamiał mi się w 20 s (!) od kliknięcia - teraz 5 s. Wielkie dzięki!

Anonimowy pisze...

Słodki stepujący Jezu! Włącza mi się niemal natychmiast, ok. 1s. wcześniej było jakieś 6

Anonimowy pisze...

Zauwazalna roznica :) mniaam ;D piekna sprawa ;D

Anonimowy pisze...

rozumiem, ze skrypt nalezy wykonywac co jakis czas jesli znowu zauwazymy, ze ff spowolnil.
przetestuje najpierw polecenie ktore podal wyzej inny Anonimowy :)

Anonimowy pisze...

Wpisując:
Components.classes["@mozilla.org/browser/nav-history-service;1"].getService(Components.interfaces.nsPIPlacesDatabase).DBConnection.executeSimpleSQL("VACUUM");
W Firefox->Narzędzia->Konsola Błędów
Zrobi to samo co ten skrypt, i co najważniejsze niezależnie jaki ma cie system i czy zainstalowaliście SQlite3.

Prześlij komentarz


Popularne posty

Etykiety