k47.cz
výběr kolo foto Praha povídky kultura
TECH ▞▞ | twitter RSS
««« »»»

Jedna vteřina

22. 7. 2019 — k47

Nechci nikoho děsit, ale as­cii­blog – soft­ware ge­ne­ru­jící kromě jiných i tento web – značně zrych­lil. Vy­ge­ne­ro­vání všech 4448 sou­borů k47čky zabere méně než jednu vte­řinu. Jestli se ge­ne­rá­tor Hugo pre­zen­tuje se svou rych­lostí jedné stránky za mi­li­sekundu jako nej­rych­lejší fra­mework pro tvorbu webů, teď je jasné, že jde o lež. As­cii­blog je víc jak 5× rych­lejší.

Ale pro­tože jsem ho napsal ve Scale běžící na JVM, je pravda o něco sple­ti­tě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 sou­sedů (jme­no­vitě Hugo a Hexo), okou­kal jsem kon­cept vý­vo­jo­vého ser­veru, který sle­duje změny v sou­bo­rech a hned je ser­ví­ruje na lo­calhostu. Ser­ve­rová část je idi­o­tická, kdo ji po­u­žije, už pro­hrál. Ge­ne­ru­jeme sta­tické sou­bory do složky, stačí ji otevřít ve fi­re­foxu a hotovo, ne­mu­sím se srát s ser­ve­rem. Na­proti tomu proces, který sle­duje změny a když ně­ja­kou de­te­kuje, au­to­ma­ticky vy­sou­struží novou verzi webu, je pří­jemný & uži­tečný. Jednak se dlouhé ge­ne­ro­vání pro­vede na pozadí, za­tímco se pře­kli­ká­vám do pro­hlí­žeče a za druhé je to dobré pro JVM. Dá mu to čas se zahřát a na­ho­dit JIT kom­pi­lá­tory. První ite­race trvá 5 vteřin, druhá jednu a půl, pátá už jen 800 mi­li­sekund, se za­pnu­tým ca­cho­vá­ním 450 ms, 0.1 ms na soubor.1 Zkus si laj­snout tohle, Hugo.

Takže možná teď sedím na po­ten­ci­álně nej­rych­lej­ším blogo-ge­ne­rá­toru na světě, co dál?

Ještě není pro­duction ready, jak říkají l33t haxor ajťáci. Jednu oblast, kterou je po­třeba ra­zantně vy­lep­šit, je pod­pora pro vlastní ša­b­lony a vzhledy. Ta je v sou­časné době více/méně ne­e­xis­tu­jící: Tady máte java in­ter­face/scala trait s pěti me­to­dami, těmi im­ple­men­tu­jete vlastní vzhled, hodně štěstí. To dneska neletí, dneska frčí html tem­plejty protkané řádky de­ge­ne­ro­va­ného pro­gra­mo­va­cího jazyka. Takhle to sa­mo­zřejmě nebudu dělat, pro­tože to nedává smysl – vy­tváří to fa­leš­nou di­cho­to­mii mezi vzhle­dem de­fi­no­va­ným kom­bi­nací HTML a pro­gra­mo­vého kódu, a ob­sa­hem de­fi­no­va­ném v Texy nebo mar­kdownu, kde nemůžu pro­gra­mo­vat. Teprve až vy­kos­tím tuhle dvou­hla­vou hydru, pak pár dal­ších a pak to udělám rychlé, může dojít ke zve­řej­nění.

Tenhle článek berte zatím jen jako malou ochut­návku.


  1. Čísla platí, když vypnu po­kro­čilé do­po­ru­čo­vání, které přidá dal­ších 400 mi­li­sekund. Na druhou stranu lepší ca­cho­vání by mohlo srazit čas o ±100 mi­li­sekund.
píše k47 & hosté, ascii@k47.cz