summaryrefslogtreecommitdiff
path: root/benchmarks/20_quantity.py
diff options
context:
space:
mode:
Diffstat (limited to 'benchmarks/20_quantity.py')
-rw-r--r--benchmarks/20_quantity.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/benchmarks/20_quantity.py b/benchmarks/20_quantity.py
new file mode 100644
index 0000000..5f6dd41
--- /dev/null
+++ b/benchmarks/20_quantity.py
@@ -0,0 +1,56 @@
+import itertools as it
+import operator
+
+import pint
+
+from . import util
+
+units = ("meter", "kilometer", "second", "minute", "angstrom")
+all_values = ("int", "float", "complex")
+all_values_q = tuple(
+ "%s_%s" % (a, b) for a, b in it.product(all_values, ("meter", "kilometer"))
+)
+
+op1 = (operator.neg, operator.truth)
+op2_cmp = (operator.eq,) # operator.lt)
+op2_math = (operator.add, operator.sub, operator.mul, operator.truediv)
+
+ureg = None
+data = {}
+
+
+def setup(*args):
+
+ global ureg, data
+
+ data["int"] = 1
+ data["float"] = 1.0
+ data["complex"] = complex(1, 2)
+
+ ureg = pint.UnitRegistry(util.get_tiny_def())
+
+ for key in all_values:
+ data[key + "_meter"] = data[key] * ureg.meter
+ data[key + "_kilometer"] = data[key] * ureg.kilometer
+
+
+def time_build_by_mul(key):
+ data[key] * ureg.meter
+
+
+time_build_by_mul.params = all_values
+
+
+def time_op1(key, op):
+ op(data[key])
+
+
+time_op1.params = [all_values_q, op1]
+
+
+def time_op2(keys, op):
+ key1, key2 = keys
+ op(data[key1], data[key2])
+
+
+time_op2.params = [tuple(it.product(all_values_q, all_values_q)), op2_math + op2_cmp]