k47.cz

mastodon twitter RSS
bandcamp explorer
««« »»»

Jedna vteřina

22. 7. 2019 — k47

Nechci nikoho děsit, ale asciiblog – software generující kromě jiných i tento web – značně zrychlil. Vygenerování všech 4448 souborů k47čky zabere méně než jednu vteřinu. Jestli se generátor Hugo prezentuje se svou rychlostí jedné stránky za milisekundu jako nejrychlejší framework pro tvorbu webů, teď je jasné, že jde o lež. Asciiblog je víc jak 5× rychlejší.

Ale protože jsem ho napsal ve Scale běžící na JVM, je pravda o něco spletitější. První spuštění trvá asi pět vteřin, to je pravda. Když jsem se díval, jak se věci dělají u sousedů (jmenovitě Hugo a Hexo), okoukal jsem koncept vývojového serveru, který sleduje změny v souborech a hned je servíruje na localhostu. Serverová část je idiotická, kdo ji použije, už prohrál. Generujeme statické soubory do složky, stačí ji otevřít ve firefoxu a hotovo, nemusím se srát se serverem. Naproti tomu proces, který sleduje změny a když nějakou detekuje, automaticky vysoustruží novou verzi webu, je příjemný & užitečný. Jednak se dlouhé generování provede na pozadí, zatímco se překlikávám do prohlížeče a za druhé je to dobré pro JVM. Dá mu to čas se zahřát a nahodit JIT kompilátory. První iterace trvá 5 vteřin, druhá jednu a půl, pátá už jen 800 milisekund, se zapnutým cachováním 450 ms, 0.1 ms na soubor.1 Zkus si lajsnout tohle, Hugo.

Takže možná teď sedím na potenciálně nejrychlejším blogo-generátoru na světě, co dál?

Ještě není production ready, jak říkají l33t haxor ajťáci. Jednu oblast, kterou je potřeba razantně vylepšit, je podpora pro vlastní šablony a vzhledy. Ta je v současné době více/méně neexistující: Tady máte java interface/scala trait s pěti metodami, těmi implementujete vlastní vzhled, hodně štěstí. To dneska neletí, dneska frčí html templejty protkané řádky degenerovaného programovacího jazyka. Takhle to samozřejmě nebudu dělat, protože to nedává smysl – vytváří to falešnou dichotomii mezi vzhledem definovaným kombinací HTML a programového kódu, a obsahem definovaném v Texy nebo markdownu, kde nemůžu programovat. Teprve až vykostím tuhle dvouhlavou hydru, pak pár dalších a pak to udělám rychlé, může dojít ke zveřejnění.

Tenhle článek berte zatím jen jako malou ochutnávku.


  1. Čísla platí, když vypnu pokročilé doporučování, které přidá dalších 400 milisekund. Na druhou stranu lepší cachování by mohlo srazit čas o ±100 milisekund.
píše k47 & hosté, ascii@k47.cz