22
33repo=$( realpath $( dirname " $0 " ) )
44tags=(
5- 0.25.5
6- 0.26.0
7- 0.27.5
8- 0.28.2
9- 0.29.1
10- 0.30.1
11- 0.31.0
5+ # 0.25.5
6+ # 0.26.0
7+ # 0.27.5
8+ # 0.28.2
9+ # 0.29.1
10+ # 0.30.1
11+ # 0.31.0
1212 HEAD
1313)
1414echo " Testing tags: ${tags[@]} "
@@ -26,28 +26,57 @@ for tag in ${tags[@]}; do
2626 else
2727 venv${tag} /bin/python -m pip install griffe==${tag} & > /dev/null
2828 fi
29+ venv${tag} /bin/python -m pip install pyinstrument scalene memray & > /dev/null
2930 fi
3031 ) &
3132done
3233wait
3334
3435cat << EOF >benchmark.py
3536import sys
37+ import griffe
3638from griffe.loader import GriffeLoader
37- stblib_packages = sorted([m for m in sys.stdlib_module_names if not m.startswith("_")])
38- loader = GriffeLoader(allow_inspection=False)
39- for package in stblib_packages:
39+ from griffe.extensions import load_extensions
40+ from griffe.extensions import Extension
41+ stdlib_packages = sorted([m for m in sys.stdlib_module_names if not m.startswith("_")])
42+ # extensions = load_extensions([
43+ # Extension, Extension, Extension, Extension,
44+ # Extension, Extension, Extension, Extension,
45+ # Extension, Extension, Extension, Extension,
46+ # Extension, Extension, Extension, Extension,
47+ # ])
48+ extensions = None
49+ loader = GriffeLoader(allow_inspection=False, extensions=extensions)
50+ for package in stdlib_packages:
4051 try:
4152 loader.load_module(package)
42- except Exception :
53+ except:
4354 pass
4455loader.resolve_aliases(implicit=False, external=False)
4556EOF
4657
47- commands=$(
58+ if [ " $1 " = " hyperfine" ]; then
59+ commands=$(
60+ for tag in ${tags[@]} ; do
61+ echo " 'venv${tag} /bin/python benchmark.py'"
62+ done
63+ )
64+
65+ eval hyperfine --show-output --runs 2 ${commands} --export-json benchmark.json
66+ elif [ " $1 " = " scalene" ]; then
4867 for tag in ${tags[@]} ; do
49- echo " ' venv${tag} /bin/python benchmark.py' "
68+ venv${tag} /bin/python -m scalene --cli --cpu --memory --profile-all benchmark.py
5069 done
51- )
52-
53- eval hyperfine --runs 3 ${commands} --export-json benchmark.json
70+ elif [ " $1 " = " memray" ]; then
71+ for tag in ${tags[@]} ; do
72+ venv${tag} /bin/python -m memray run -o report${tag} .bin benchmark.py
73+ # venv${tag}/bin/python -m memray flamegraph report${tag}.bin
74+ # venv${tag}/bin/python -m memray tree report${tag}.bin
75+ # venv${tag}/bin/python -m memray summary report${tag}.bin
76+ venv${tag} /bin/python -m memray stats report${tag} .bin
77+ done
78+ elif [ " $1 " = " pyinstrument" ]; then
79+ for tag in ${tags[@]} ; do
80+ venv${tag} /bin/pyinstrument benchmark.py
81+ done
82+ fi
0 commit comments