commit:     746642aec3f9380f44bff3c5e8b79acfb105af6b
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 15 12:24:43 2023 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jun 17 10:10:14 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=746642ae

eclass/tests: Add a benchmark for python-utils-r1

Initial timings on my system:

```
 * Timing _python_set_impls
real 1463 it/s
user 1886 it/s
```

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 eclass/tests/python-utils-bench.sh | 53 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

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

Reply via email to