summaryrefslogtreecommitdiff
path: root/eclass/tests
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-06-17 13:44:44 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-06-17 13:44:44 +0100
commit197f0639ca0a63b397552e059e2a992d39e09e55 (patch)
treee1032f9c40acba54566ab1f486f6a499b04bc7dc /eclass/tests
parentb978efa000250668b2befa4e2cc96e0afa137611 (diff)
gentoo auto-resync : 17:06:2023 - 13:44:44
Diffstat (limited to 'eclass/tests')
-rwxr-xr-xeclass/tests/python-utils-bench.sh53
1 files changed, 53 insertions, 0 deletions
diff --git a/eclass/tests/python-utils-bench.sh b/eclass/tests/python-utils-bench.sh
new file mode 100755
index 000000000000..7f27adef5509
--- /dev/null
+++ b/eclass/tests/python-utils-bench.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+source tests-common.sh || exit
+
+export LC_ALL=C
+
+ITERATIONS=10000
+RUNS=3
+
+doit() {
+ local i
+ for (( i = 0; i < ITERATIONS; i++ )); do
+ "${@}"
+ done
+}
+
+timeit() {
+ local real=()
+ local user=()
+ local x vr avg
+
+ einfo "Timing ${*}"
+ for (( x = 0; x < RUNS; x++ )); do
+ while read tt tv; do
+ case ${tt} in
+ real) real+=( ${tv} );;
+ user) user+=( ${tv} );;
+ esac
+ done < <( ( time -p doit "${@}" ) 2>&1 )
+ done
+
+ [[ ${#real[@]} == ${RUNS} ]] || die "Did not get ${RUNS} real times"
+ [[ ${#user[@]} == ${RUNS} ]] || die "Did not get ${RUNS} user times"
+
+ local xr avg
+ for x in real user; do
+ xr="${x}[*]"
+ avg=$(dc -S 3 -e "${ITERATIONS} ${RUNS} * ${!xr} + + / p")
+
+ printf '%s %4.0f it/s\n' "${x}" "${avg}"
+ done
+}
+
+PYTHON_COMPAT=( python3_{10..12} pypy3 )
+
+inherit python-utils-r1
+
+timeit _python_set_impls
+
+texit