Un traducteur md -> html minimal en awk - retour accueil
git clone git://bebou.netlib.re/katdown
Log | Files | Refs | README |
commit 1f1f90350a75e2428a7957f7828ac514dc17d399 parent 963fa789db7cbe1be8f0664e4527ba6e7f6a4a06 Auteurice: Arthur Pons <arthur.pons@unistra.fr> Date: Tue, 4 Mar 2025 11:10:23 +0100 Plus de documentation sur les performances Diffstat:
M | README | | | 42 | +++++++++++++++++++++++++++++++++++++----- |
1 file changed, 37 insertions(+), 5 deletions(-)
diff --git a/README b/README @@ -56,11 +56,16 @@ est identique aux sorties de `cmark` et `lowdown` dans `lynx`. ## Performances +### Un gros fichier + On génère un énorme fichier markdown en copiant 10 000 fois le README. On -lance katdown dessus. On compare avec les perfs de cmark et lowdown : +lance katdown interprété par `gawk` dessus. On compare avec les perfs de cmark +et lowdown (j'utilise `zsh` et son builtin `time`) : $ yes README | head -n10000 | xargs cat > big $ wc -l big; du -h big + 560000 big + 14M big $ time < big ./katdown > a ./katdown < big > a 2,77s user 0,02s system 99% cpu 2,791 total $ time < big cmark > a @@ -68,8 +73,35 @@ lance katdown dessus. On compare avec les perfs de cmark et lowdown : $ time < big lowdown > a # NE TERMINE PAS -`katdown` a des performances raisonnables, convertissant plus de 500 000 lignes -de markdown en moins de trois secondes. `cmark` reste beaucoup plus performant, -environ 5 fois plus rapide. `lowdown` a manifestement un souci de perf et ne -termine pas. +`katdown` + `gawk` a des performances raisonnables, convertissant plus de 500 +000 lignes de markdown en moins de trois secondes. `cmark` reste beaucoup plus +performant, environ 5 fois plus rapide. `lowdown` a manifestement un souci de +perf et ne termine pas. + +A noter, `mawk` semble encore mieux performer en parsant le gros fichier en 1 +seconde seulement ! Ce qui n'est pas une découverte puisque : + + $ apt show mawk | grep rapide + Mawk est plus petit et plus rapide que gawk. Il a quelques limites à la + +Si un jour `katdown` supporte les tableaux je mettrais ici un joli tableau des +perfs de chaque interpréteur. + +### Pleins de petits fichiers + +On copie 10 000 fois le README puis on lance les traducteurs, quatre en +parrallèle, sur les 10 000 fichiers : + + $ for i in $(seq 10000);do cp README README-$i; done + $ find -type f -name 'README*' | xargs -P4 -n1 cmark > /dev/null + find -type f -name 'README*' 0,01s user 0,01s system 0% cpu 2,150 total + xargs -P4 -n1 cmark > /dev/null 7,48s user 2,28s system 229% cpu 4,247 total + $ find -type f -name 'README*' | xargs -P4 -n1 ./katdown > /dev/null + find -type f -name 'README*' 0,01s user 0,01s system 95% cpu 0,020 total + xargs -P4 -n1 ../katdown > /dev/null 20,72s user 16,74s system 364% cpu 10,282 total + +`katdown` convertit les 10 000 fichiers en un peu plus de 10 secondes, `cmark` +en un peu plus de 4 secondes. Il ne semble donc pas y avoir d'overhead +significatif au lancement d'awk. Encore moins en utilisant `mawk` avec un temps +de génération de 3,5 secondes, plus rapide que `cmark` !