From 17f5e0a55faca20a99cddf0cc4e6bbc41ac5f556 Mon Sep 17 00:00:00 2001 From: octospacc Date: Thu, 1 Sep 2022 17:00:00 +0200 Subject: [PATCH] Agg. Devlog; Mod. interna --- Pages/Devlogs.md | 30 +++++++++++++++++++ ...03-0000-Come-e-Perche-il-Sitoctt-su-Tor.md | 2 +- Scripts/Profile.PC.sh | 17 +++++++++++ Site.ini | 4 ++- 4 files changed, 51 insertions(+), 2 deletions(-) create mode 100755 Scripts/Profile.PC.sh diff --git a/Pages/Devlogs.md b/Pages/Devlogs.md index fe1b414..8b7332c 100644 --- a/Pages/Devlogs.md +++ b/Pages/Devlogs.md @@ -18,6 +18,32 @@ _Ovviamente, scriverò soltanto la roba interessante, non tutto quello che facci
+
+#### [2022-09-01] Ottimizzazioni necessarie +-> #staticoso + +Nei giorni appena passati ho apportato qualche **miglioria interna** a **staticoso**. + +La prima cosa che ho fatto è stata aggiungere il supporto alla **compilazione differenziale** dei siti, ossia: ad ogni esecuzione, il programma ricompila solo le pagine che sono effettivamente cambiate dalla compilazione precedente, arrivando quindi ad una **maggiore efficienza**. + +La funzione è **ancora da perfezionare**, in quanto non controlla se l'HTML di template cambia, ma solo se lo fanno i file di pagine e post. +La cosa può risultare in confusione durante l'uso: eventuali utenti che usano il software (_me in primis_) magari modificano un template, non vedono le differenze dopo una ricompilazione, e _apriti cielo_. Per questo motivo, per il momento la funzionalità non è attiva di default; chi vuole usarla deve attivare una flag. + +Oltre a ciò, la build differenziale va ancora a calcolare alcune cose che non cambiano, quindi non siamo ancora alla massima efficienza; per arrivarci, dovrò implementare una cache per alcune di quelle cose che servono solo durante l'esecuzione, in modo che il programma possa ripescarle dall'archiviazione locale. + +La compilazione differenziale può arrivare a far **risparmiare tantissimo tempo**, reale oltre che di CPU, ma si può fare di più per guadagnare fino all'ultimo millisecondo della prima categoria: usare il **multithreading**. +Con il multithreading - anche questo implementato parzialmente nei giorni passati - il programma può usare **tutti i processori** (fisici e logici) **allo stesso tempo**, anziché uno solo, dividendo quindi il tempo reale necessario al completamento di tutti i calcoli. Viene da sé che, più processori si hanno, più è possibile dividere il tempo. + +Il mio sito, con **30 pagine Markdown** (ho escluso l'unica in Pug, che richiede una chiamata ad un programma esterno, apposta per testare) che in totale ad oggi pesano **~180 KB**, appena qualche giorno fa impiegava attorno ai 2200 millisecondi per compilarsi sul mio PC desktop[^ groso 2022-09-01]. Con le nuove ottimizzazioni, invece.. si parla di **~850 ms** per una compilazione pulita, e **~450 ms** per una differenziale senza alcuna modifica da ricompilare. Non male! + +Giusto per, ho voluto fare un **test** - che, se avessi voluto fare davvero per bene, avrei dovuto fare in confronto ad altri generatori di siti statici - su un ipotetico sito da **1500 pagine**. Ho quindi copiato la cartella del mio sito, sdoppiato tutte le pagine per farle arrivare alla grossa cifra (in peso dei file avrò avuto un totale di **9 MB**, considerando `(180/30)*1500`), e ho acceso il programmino. +Esecuzioni diverse hanno dato risultati un po' diversi, forse perché avevo diversi _altri programmi_ aperti che _mangiavano CPU_ (primo di tutti, Firefox che riproduceva un video da Invidious; almeno il 20% di CPU era occupato); ma posso dire di aver visto **~160 s** per una build pulita e **~17 s** per la differenziale (di nuovo, senza alcuna effettiva modifica). + +![Schermata di Task Manager nel momento della compilazione del sito grosso.]([staticoso:Folder:*:AbsoluteRoot]/sitoctt-assets/Media/Screenshots/Task-Manager-staticoso-Test-1500-2022-08-30.avif) + +Quei 17 secondi in particolare, comunque, mostrano senza alcun dubbio che il mio codice **va ancora ottimizzato** - oltre il poco che ho già fatto. Vabbè, in ogni caso mi soddisfa già il punto in cui sono arrivata! +
+
#### [2022-08-29] Titoli delle sezioni, ma ancora meglio -> #staticoso #sitoctt @@ -113,3 +139,7 @@ _O almeno, così è al momento in cui scrivo_. Non è mica da escludere che lo s
+ +## [:HNotesRefsHTML:] + +[^ groso 2022-09-01]: In data **2022-09-01**, il mio PC fisso è: **CPU** [AMD Ryzen 3 3200G](https://www.amd.com/en/products/apu/amd-ryzen-3-3200g){[:MdTgtBlank:]}; **OS** [Void GNU+Linux](https://voidlinux.org){[:MdTgtBlank:]} x86_64, libc musl. diff --git a/Posts/2022-06-03-0000-Come-e-Perche-il-Sitoctt-su-Tor.md b/Posts/2022-06-03-0000-Come-e-Perche-il-Sitoctt-su-Tor.md index 2d1d68e..e44e3ae 100644 --- a/Posts/2022-06-03-0000-Come-e-Perche-il-Sitoctt-su-Tor.md +++ b/Posts/2022-06-03-0000-Come-e-Perche-il-Sitoctt-su-Tor.md @@ -8,7 +8,7 @@ In questi giorni ho sistemato i primi affari riguardanti il rendere disponibile il sitocto sulla rete Tor. C'è chi mi definirà esagerata anche soltanto per aver avuto il pensiero di fare una cosa del genere, ma c'è poco da fare. Se nulla è andato storto, il servizio Onion è ancora raggiungibile a questo indirizzo: -^~ ~~[onmfrk2acl4xdeawfjg3nfepq7gcufolctmhiwwxpcknazus5bxzxhqd.onion](http://onmfrk2acl4xdeawfjg3nfepq7gcufolctmhiwwxpcknazus5bxzxhqd.onion){: style='Color:#a060c0;' }~~ ~^ +~~[onmfrk2acl4xdeawfjg3nfepq7gcufolctmhiwwxpcknazus5bxzxhqd.onion](http://onmfrk2acl4xdeawfjg3nfepq7gcufolctmhiwwxpcknazus5bxzxhqd.onion){: style='Color:#a060c0;' }~~ [sitoctt2fxjvx3lc2iqqef2aeulflprjaasv2xl4zi7sxxbmvjy5b5yd.onion](http://sitoctt2fxjvx3lc2iqqef2aeulflprjaasv2xl4zi7sxxbmvjy5b5yd.onion)[^ Nuovo dominio estetico] L'idea - apparentemente riuscita - è stata quella di utilizzare un servizio PaaS gratuito, Replit, per fare il tutto. diff --git a/Scripts/Profile.PC.sh b/Scripts/Profile.PC.sh new file mode 100755 index 0000000..59a5671 --- /dev/null +++ b/Scripts/Profile.PC.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +Time=time + +source ./.env +python3 -m cProfile \ + -s $Time \ + ../staticoso/Source/Build.py \ + --SiteDomain="https://sitoctt.octt.eu.org" \ + --FolderRoots="{'*':'https://octtspacc.gitlab.io'}" \ + --Minify="False" \ + --DiffBuild="True" \ + > /tmp/staticoso-$Time.txt + + + #--DiffBuild="True" \ + #--GemtextOutput=True \ diff --git a/Site.ini b/Site.ini index e03ec4b..40a9510 100644 --- a/Site.ini +++ b/Site.ini @@ -3,6 +3,7 @@ Name = ✨sitoctt✨ BlogName = blogoctt Template = sitoctt.html Lang = it +HTMLFixPre = True [Categories] Uncategorized = Fritto-Misto @@ -12,7 +13,8 @@ Minify = True KeepComments = True [Markdown] -Exts = ('attr_list', 'def_list', 'footnotes', 'markdown_del_ins', 'md_in_html', 'mdx_subscript', 'mdx_superscript', 'tables') +# Exts = ('attr_list', 'def_list', 'footnotes', 'markdown_del_ins', 'md_in_html', 'mdx_subscript', 'mdx_superscript', 'tables') +Exts = ('attr_list', 'def_list', 'footnotes', 'markdown_del_ins', 'md_in_html', 'mdx_superscript', 'tables') [Menu] # 0 = index