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

Zdroják » Zprávičky » Zrychlete práci s Canvasem!

Zrychlete práci s Canvasem!

Zprávičky ‐ ‐ Webdesign ‐

Vývojáři píšící aplikace v JavaScriptu znají pravidlo, které říká: Vyhněte se častým operacím s DOMem. Pokud potřebujete např. vytvořit větší množství entit, je lépe si je vytvořit „bokem“, a aktualizovat je nakonec a najednou.

Podobné pravidlo lze vztáhnout i na práci s pixely v canvasu, jak popsal ve svém článku Selim Arsever. Jeho postup je velmi jednoduchý – nejprve si vytvoří lokální kopii image.data, do ní provede potřebné změny, a výsledek přiřadí zpět. Tímto postupem (nazvaným „DOM detaching“, tedy „odpojení od DOMu“) dosáhl zrychlení o cca 40%. V článku naleznete i graf s porovnáním rychlosti různých variant v jednotlivých prohlížečích.

Zdroj: Ajaxian

Komentáře

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

Starý dobrý double buffering :)

harvie

cim linejsi platforma, tim vetsi smysl double buffering ma… to neni treba overovat :-)

x

protoze js predava objekty referenci, a vtom image.data je objekt typu pole. viz priklad:

var a = [1,2];
b = a;
b[0] = 4;
alert(a + ' ' + b);

Ash

zrychlení asi spočívá v tom, že v tom druhém případě se pracuje přímo s polem data, kdežto bez toho se pracuje s objektem image v DOM, přes který se přistupuje k poli data.
mydata = foo vs. image.mydata = foo
tedy asi není totéž jako
mydata = foo vs. otherdata = foo

Ash

On trochu mate ten název „detaching“, protože o žádný detaching nejde, spíš o „direct access“.

x

dobre, pokud to je teda jak rikate vy a kolega dole, ze jde jen o urychleni dejme tomu na urovni pri prochazeni nejakeho stromu pameti, diky hodne volani ve smycce, a pokud plati ze js pouziva vzdy reference, tak je stejne nesmysl to nakonci nastavovat zpatky tu hodnotu na tu puvodni, jak tam pise, And here we attache it back.

__dark__

Přečetl jsem to, a celé mi to přijde jako nesmysl. Není to ani detach, ani double-buffer, je to obyčejné zkrácení cesty. Když napíšu v javascriptu ‚neco.neco.neco‘, tak se to musí pokaždé vyhodnotit, takže je logické, že zkrácením toho výrazu na ‚a = neco.neco.neco‘ dosáhnu o lepšího výkonu v hlavní smyčce. Pro některé je to asi objevení ameriky.
Spíš mě zaráží, že autor plní pixely úplně opačným směrem (což pro sběrnici určitě dobré není) a ve smyčce má chybu, pixel na souřadnici [0, 0] se nepřekreslí…

WebSocket: Jak dostat webovou aplikaci do reálného času

Chat, živé notifikace, společná úprava dokumentu nebo průběžně aktualizované kurzy. Uživatelé dnes čekají, že se webová aplikace změní ve chvíli, kdy se změní data, a ne až po stisknutí klávesy F5. Protokol WebSocket je nejrozšířenější způsob, jak mezi prohlížečem a serverem vytvořit trvalý obousměrný kanál. V článku se podíváme, jak funguje pod kapotou, jak ho použít v prohlížeči i na serveru a na co si dát pozor při nasazení do produkce.

Zahoďte knihovny: dropdowny, tooltipy a přechody stránek jen s HTML a CSS

Rozbalovací menu, tooltip, modální okno a plynulý přechod mezi stránkami. Ještě nedávno čtyři důvody, proč do projektu přidat několik knihoven a desítky kilobajtů JavaScriptu. V roce 2026 už to všechno zvládne prohlížeč sám. Ukážeme si, jak na to s Popover API, CSS anchor positioningem a View Transitions, a také kde mají své limity.

Rok po Shai-Hulud: co se změnilo na npm a co musíte udělat do ledna

Před rokem začal registrem npm procházet samošířící červ Shai-Hulud. Od té doby se útoky na dodavatelský řetězec JavaScriptu staly pravidelnou záležitostí a npm postupně přepisuje pravidla publikování. Projdeme, co se za ten rok stalo, jak dnes bezpečně publikovat balíček, co musíte stihnout do ledna 2027 a jak se bránit jako uživatel balíčků.