Přejít k navigační liště

Zdroják » Webdesign » Safari Web Inspector: Ladění výkonu JavaScriptu

Safari Web Inspector: Ladění výkonu JavaScriptu

Články Webdesign

Web Inspektor je mocný nástroj pro webdesignery a webové vývojáře. Je distribuován s vývojovými verzemi prohlížeče Safari a s prohlížečem Google Chrome. Součástí Web Inspektoru je i nástroj Profiles, který nám pomůže s měřením výkonu našich JavaScriptových funkcí. Jak na to se dozvíte v dnešním článku.

předcházejícím článku o Web Inspectoru jsme se seznámili se základními nástroji: Elements, Resources a Scripts. Teď se podíváme na nástroj Profiles, který nám pomůže s měřením výkonu našich JavaScriptových funkcí.

Verze použitého nářadí

Při psaní článku jsem používal standardní verzi Safari 4.0.1 (5530.18) pod Mac OS X Leopard 10.5.7 (dostupná i pod Windows). Pro porovnání jsem použil Firebug 1.4.0b4 ve Firefoxu 3.5.

Příprava

Dobrá zpráva na začátek: Web Inspector implementuje profilování JavaScriptu, které přinesl Firebug, takže pokud používáte toto neocenitelné rozšíření Firefoxu pro ladění JavaScriptu, budete jako doma. Jste-li laděním JavaScriptu netknutí, vytvořil jsem jednoduchou stránku, na které si ukážeme základy.

Okno Web Inspectoru otevřeme buď přes hlavní menu Safari Develop > Web Inspector, nebo přes klávesovou zkratku ⌥⌘I), přepneme se do záložky Profiles a zmáčkneme Enable Profiling. Ještě si otevřeme konzoli (Develop > Show error console nebo ⌥⌘C nebo kliknutím na druhou ikonku zleva v levém dolním rohu okna Web Inspectoru) a jsme v plné polní… tedy pro ladění JavaScriptu.

Okno Web Inspectoru připravené na měření

Obr. 1 – Okno Web Inspectoru připravené na měření

Ladíme

Samotné měření lze aktivovat dvěma způsoby, buď zmáčkneme tlačítko „záznamu”, nebo si umístíme volání pro aktivaci přímo do JavaScriptu.

Výhodou i nevýhodou aktivace přes tlačítko záznamu je to, že Web Inspector pak zaznamenává vše, co se na stránce dělo, včetně doby, kdy se nedělo nic, takže se hodí především pro obecný přehled toho, kde jsou slabá místa na naší stránce. Pak se na příslušné JavaScriptové funkce můžeme zaměřit a použít aktivaci analýzy pomocí vložení patřičného příkazu přímo do kódu.

Příklad výsledků měření aktivovaného tlačítkem záznamu

Obr. 2 – Příklad výsledků měření aktivovaného tlačítkem záznamu

Příkazy console

Jak jsem už zmínil, Web Inspector podporuje syntaxi Firebugu, takže přehled dostupných příkazů najdete na jeho webu. Já zde zmíním jen několik z nich, pro ilustraci a podnícení vašeho zájmu.

Základní příkaz jeconsole.profile([title]) s volitelným parametrem pro název profilu a jeho ukončovací příkaz console.profileEnd([title]) . Vložíme je na místo, kde chceme zahájit a ukončit měření, nebo je samozřejmě můžeme navázat pomocí nějakého EventListeneru. Příklad:

function pocitej()
{
console.profile('pocitej'); // vloženo pro měření
uloha_1(100000);
uloha_2(1000);
uloha_1(100000);
uloha_2(1000);
console.profileEnd('pocitej'); // ukončení měření
}

Ukázka profilu vygenerovaného výše uvedeným kódem

Obr. 3 – Ukázka profilu vygenerovaného výše uvedeným kódem

Takových profilů si můžeme vytvořit více a cílit tak několik míst kódu najednou. Pro srovnání ještě uvedu, jak vypadá výpis vyvolaný stejným kódem v rozšíření Firebug.

Stejný profil vygenerovaný ve Firebugu

Obr. 4 – Stejný profil vygenerovaný ve Firebugu

Další klíčová dvojice jeconsole.time([title]) console.timeEnd([title]) . Jak název napovídá, slouží k prostému měření času, který utekl při vykonávání JavaScriptu mezi dvěma zadanými body. Výsledek se nám vypíše přímo do konzole. Příklad:

function uloha_2(do_kolika)
{
console.time('uloha_2'); // začínáme stopovat
for(var i=0;i<do_kolika;i++)
{
for(var j=0;j>do_kolika;j++)
{

}
}
console.timeEnd('uloha_2'); // končíme stopování
}

Výsledek použití console.time (dvojka v kolečku oznamuje, že mís

Obr. 5 – Výsledek použití console.time (dvojka v kolečku oznamuje, že místo bylo voláno dvakrát)

Často se nám bude hodit nechat si do konzole vypsat nějakou hlášku nebo hodnotu proměnných. K dispozici máme celou škálu příkazů console.log(object[, object, ...]) , console.info(object[, object, ...]) , console.warn(object[, object, ...]) ,console.error(object[, object, ...]) Příkazy se liší v tom, jakým způsobem zobrazí výstup do konzole.

Příklady výpisu různých typů hlášek do konzole

Obr. 6 – Příklady výpisu různých typů hlášek do konzole

Pro základní seznámení takový úvod postačí. Pokud vás možnosti ladění JavaScriptu ve Web Inspectoru (potažmo Firebugu) zaujaly, nainstalujte si jej, projděte si zdroje a zkoušejte.

Zdroje

Komentáře

Odebírat
Upozornit na
guest
1 Komentář
Nejstarší
Nejnovější Nejvíce hlasů
jezovec

Jenom bych upozornil že již není třeba instalovat night builds (jak je
popsáno v předchozím díle seriálu) ale že uvedené nástroje jsou přímo
součástí Safari 4, současné produkční verze Safari. Je třeba je pouze
povolit/zviditelnit v Preferences (např. Advanced → Show Develop menu in
menu bar v OS X verzi).

Proč vám model napíše Python, i když jste si řekli o Rust

AI
Komentáře: 0
Výkonnostní propast mezi Pythonem a ostatními jazyky se za poslední rok a půl skoro zavřela. Dnešní modely zvládají Rust i Go srovnatelně dobře. Když jim ale volbu necháte, sáhnou stejně po Pythonu. A u knihoven je to ještě výraznější: mezi funkčně srovnatelnými balíčky je až 84procentní rozdíl v kvalitě generovaného kódu. Proč to tak je a co s tím.

WP2Shell: Kritická hrozba pro samotné jádro WordPressu. Útočníci mohou získat kontrolu nad webem

Zranitelnost ve WordPressu není žádná novinka. Kdo provozuje weby postavené na této platformě, ví, že bezpečnostní záplaty chodí prakticky pořád. O to větší pozornost by měla vzbudit chyba, u které nic z toho neplatí. A přesně takový je případ zranitelnosti, která dostala přezdívku wp2shell. potřeb. Zranitelný kontaktní formulář, děravý e-shopový plugin, opomenutá kontrola oprávnění v nějaké obskurní rozšiřující knihovně – to je denní chleba každého, kdo sleduje bezpečnostní feedy. Zpráva „nová chyba ve WordPress pluginu“ má tak nízkou informační hodnotu, že ji většina lidí přejde bez mrknutí oka.

Mýtus jedné aplikace: proč PWA nenahradí vývoj pro každou platformu

PWA mohou webu přidat ikonu na ploše, fungování bez připojení, notifikace a některé systémové funkce. Nejsou ale cestou k jednomu klientu pro všechny platformy. Vyplatí se tam, kde se lidé k webu vracejí a ocení okamžitý vstup z odkazu. Jakmile aplikace musí spolehlivě běžet na pozadí nebo fungovat stejně na každém zařízení, bývá vhodnější nativní řešení.