< > wszystkie blogi

salival's absurdlog

Potwornie absurdalny blog

Fakty i mity o wydajności przeglądarek WWW

15 kwietnia 2008

Dziś obalam mit. Wczoraj na jednym z for natknąłem się na dyskusję na temat szybkości działania Opery, IE7 oraz FF i tym samym stwierdzeniu, która z wymienionych przeglądarek jest lepsza. Trudno jednak jest przekonać kogoś kto wierzy, że kliknięcie "search" na stronie działa jak niezawodny test, w FF odpowiedź po 3 sekundach, w Operze po 14 - FF lepszy... hmm...bzdura...


1. Jak działa przeglądarka WWW?

Generalnie metoda jest prosta. Przeglądarka wysyła zapytanie do serwera HTTP, serwer po przygotowaniu odpowiedzi wysyła ją, przeglądarka odbiera i przetwarza, połączenie się zamyka. W ten sposób otrzymujemy każdy plik z serwera HTTP, czy to jest kasia.html czy basia.jsp czy zosia.php. Otrzymujemy dane w zawsze w konkretnym formacie, może to być czysty tekst, html, jpg itp ( itp to nie format :C ). Powiedzmy, że wysłaliśmy do serwera zapytanie o treści "www.joemonster.org". Otrzymujemy stronę główną. Tzn. jej treść uprzednio wygenerowaną po stronie serwera, która dociera do naszej przeglądarki już jako HTML. A co z obrazkami i innymi elementami ktoś zapyta? I tu właśnie przeglądarka zaczyna przetwarzać otrzymany kod strony wyszukując wszelkie linki do obrazków, flashy, appletów. Po znalezieniu linka postępuje dokładnie w ten sam sposób jak w przypadku pobierania kodu samej strony - otwiera połączenie, wysyła zapytanie, otrzymuje to co trzeba ( no albo 404 czy zdrapkę :C ) zamyka połączenie, embeduje grafikę, applet czy flasha w stronę, tzn w jej wizualną reprezentację w oknie przeglądarki. Po odebraniu wszystkiego, strona jest gotowa. Taki jest schemat działania chyba każdej dostępnej przeglądarki. Więc gdzie niby mają być te różnice w wydajności?

2. Na co tak naprawdę przeglądarka poświęca najwięcej czasu?

Z punktu pierwszego można wysunąć prosty wniosek - na czekaniu, czekaniu i jeszcze raz czekaniu na odpowiedź serwera. Długość ładowania się strona zależy w znacznej mierze właśnie od oczekiwania, aż serwer raczy przygotować odpowiedź i ją wysłać. W Firefox często można podziwiać status "waiting", w Operze również itp. Jest to element zupełnie niezależny od przeglądarki, a zajmujący często najwięcej czasu w procesie ładowania strony! We wstępie wspomniałem o dyskusji, na którą się natknąłem i sposobie testowania wydajności poprzez dokładnie wejście na ebay i wpisanie w pole "search" czegokolwiek. Czas wyszukiwania miał posłużyć za miernik wydajności przeglądarki. Oczywiście nie ma znaczenia jak długo serwerowi schodzi z samym wykonaniem szukania, które przy różnym jego obciążeniu jest zmienne i może naprawdę wariować :> Test ten jest bezsensowny, ale zauważyłem przeszukując następne fora i blogi - że o dziwo dość popularny i wielu użytkowników w to, że Google czy EBay znajdzie coś w 5 sekund na FF a w 10 na Operze czy odwrotnie, to traktują wynik jako wymierny rezultat testu wydajności! Mit, mit i jeszcze raz mit i absurd w jednym!

3. Przeglądarka też nie leń i coś robi...

No właśnie, czym więc jest "wydajność przeglądarki", którą chcemy jakoś zmierzyć, może opisać i powiedzieć jasno FF jest szybszy niż Opera czy IE7 jest szybszy niż FF? Wydajność przeglądarki można oceniać co najwyżej w kwestii działania jej wizualnej strony, a więc jak działa scroll strony, jak szybko po załadowaniu pojawiają się grafiki, czy strona pokazuje się razem z grafikami, lub po prostu najpierw pokazuje się to co w kodzie HTML, a później wypełnia się grafikami. Są to na ogół rzeczy mało istotne z punktu widzenia użytkownika. Scroll strony w Operze zawsze był wolniejszy niż w FF, bo Opera nie trzyma zdekompresowanej grafiki tak jak FF, ale czy wielu użytkowników zwraca tak naprawdę na to uwagę? Interpretowanie strony HTML również raczej nie różni się zbytnio w różnych przeglądarkach. Dlaczego? Bo i tak wszystkie silniki używają dziś biblioteki Xerces. Sprawdzałem jakiś czas temu jak szybko wyświetla się kod strony mającej około 10mb, na obu przeglądarkach wyszło wolno, praktycznie tak samo wolno.

4. Czy jest więc o czym dyskutować?

Owszem, jest, jak kogoś drażni wolniejszy scroll strony w górę i w dół, wolniejsze otwieranie tabów z powodu innej metody zarządzania pamięcią, czyli kiedy drażnią kogoś lokalne braki w wydajności. Są to jednak różnice zwykle nie przekraczające 1-2 sekund i zdarzają się w przypadkach każdej przeglądarki ( np. szybko otwierający taby FF może się akurat zaciąć na reallokowaniu pamięci przy powiększaniu heap'u ). Jednak mitem jest to, że same ładowanie strony ma jakikolwiek większy związek z przeglądarką internetową. W momencie gdy wpisujesz adres, naciskasz "search", czy wysyłasz jakiekolwiek zapytanie do serwera - to serwer, twoje łącze, jego łącze, łącza po drodze, serwery i routery po drodze są najbardziej odpowiedzialne za to, jak szybko otrzymasz odpowiedź i zobaczysz stronę. Wyświetlenie to są ułamki sekund ( chyba, że ktoś nadal działa na procku 486 :C lub starej Amidze ;) ).

 

Dobra, dobra. Chwila. Chcesz sobie skomentować lub ocenić komentujących?

Zaloguj się lub zarejestruj jako nieustraszony bojownik walczący z powagą

Napędzana humorem dzięki Joe Monsterowi