build_a_blog: bench
This commit is contained in:
parent
6cb7aa53df
commit
e8276cb4e9
2 changed files with 81 additions and 0 deletions
22
bench.sh
Executable file
22
bench.sh
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
amt=$1
|
||||||
|
if [[ -z "$amt" ]]; then
|
||||||
|
echo "ERROR: pass number of test posts for bench" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "INFO: removing old __bench files" 1>&2
|
||||||
|
rm -f ./posts/*__bench*
|
||||||
|
for i in $(seq 1 "$amt"); do
|
||||||
|
cp ./posts/build_a_blog.md ./posts/build_a_blog_${i}__bench.md
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
echo "INFO: number of *.md files $(find ./posts/ -iname '*.md' | wc -l)" 1>&2
|
||||||
|
echo "INFO: number of *.html files $(find ./posts/ -iname '*.html' | wc -l)" 1>&2
|
||||||
|
echo "INFO: running" 1>&2
|
||||||
|
time -p python main.py 2>/dev/null
|
||||||
|
echo "INFO: number of *.html files $(find ./posts/ -iname '*.html' | wc -l)" 1>&2
|
||||||
|
echo "INFO: cleanup __bench files" 1>&2
|
||||||
|
rm -f ./posts/*__bench*
|
|
@ -652,6 +652,7 @@ It's not great software.
|
||||||
* Using adhoc dicts for generic structures
|
* Using adhoc dicts for generic structures
|
||||||
* Relies on system python version and packages.
|
* Relies on system python version and packages.
|
||||||
* Does not offer anything a tool like [hugo][hugo] does not already offer.
|
* Does not offer anything a tool like [hugo][hugo] does not already offer.
|
||||||
|
* Probably slow in extreme cases.
|
||||||
|
|
||||||
But, it's ~150 lines of python with 1 external dependency.
|
But, it's ~150 lines of python with 1 external dependency.
|
||||||
|
|
||||||
|
@ -733,6 +734,64 @@ html should get generated, but not in the index or xml
|
||||||
0
|
0
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 2024-06-19, is it slow?
|
||||||
|
|
||||||
|
Quick benchmark script `bench.sh`
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
amt=$1
|
||||||
|
if [[ -z "$amt" ]]; then
|
||||||
|
echo "ERROR: pass number of test posts for bench" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "INFO: removing old __bench files" 1>&2
|
||||||
|
rm -f ./posts/*__bench*
|
||||||
|
for i in $(seq 1 "$amt"); do
|
||||||
|
cp ./posts/build_a_blog.md ./posts/build_a_blog_${i}__bench.md
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
echo "INFO: number of *.md files $(find ./posts/ -iname '*.md' | wc -l)" 1>&2
|
||||||
|
echo "INFO: number of *.html files $(find ./posts/ -iname '*.html' | wc -l)" 1>&2
|
||||||
|
echo "INFO: running" 1>&2
|
||||||
|
time -p python main.py 2>/dev/null
|
||||||
|
echo "INFO: number of *.html files $(find ./posts/ -iname '*.html' | wc -l)" 1>&2
|
||||||
|
echo "INFO: cleanup __bench files" 1>&2
|
||||||
|
rm -f ./posts/*__bench*
|
||||||
|
```
|
||||||
|
|
||||||
|
```shell
|
||||||
|
❯ ./bench.sh 100
|
||||||
|
INFO: removing old __bench files
|
||||||
|
INFO: number of *.md files 102
|
||||||
|
INFO: number of *.html files 2
|
||||||
|
INFO: running
|
||||||
|
real 0.94
|
||||||
|
user 0.92
|
||||||
|
sys 0.02
|
||||||
|
INFO: number of *.html files 102
|
||||||
|
INFO: cleanup __bench files
|
||||||
|
|
||||||
|
❯ ./bench.sh 1000
|
||||||
|
INFO: removing old __bench files
|
||||||
|
INFO: number of *.md files 1002
|
||||||
|
INFO: number of *.html files 2
|
||||||
|
INFO: running
|
||||||
|
real 8.45
|
||||||
|
user 8.31
|
||||||
|
sys 0.12
|
||||||
|
INFO: number of *.html files 1002
|
||||||
|
INFO: cleanup __bench files
|
||||||
|
```
|
||||||
|
|
||||||
|
So approx 0.8s per 100 posts which starts to get a bit painful in the thousands.
|
||||||
|
|
||||||
|
Will be a fun future idea to try to solve.
|
||||||
|
|
||||||
|
|
||||||
[1]: https://crystal-lang.org/
|
[1]: https://crystal-lang.org/
|
||||||
[2]: https://github.com/crystal-lang/crystal/releases/tag/0.31.0
|
[2]: https://github.com/crystal-lang/crystal/releases/tag/0.31.0
|
||||||
[3]: https://pkgs.alpinelinux.org/package/edge/main/x86_64/py3-markdown
|
[3]: https://pkgs.alpinelinux.org/package/edge/main/x86_64/py3-markdown
|
||||||
|
|
Loading…
Reference in a new issue