summaryrefslogtreecommitdiff
path: root/benchmarks
diff options
context:
space:
mode:
authorStephan Hoyer <shoyer@google.com>2018-09-21 18:15:09 -0700
committerStephan Hoyer <shoyer@google.com>2018-09-21 18:30:22 -0700
commit415f327069d26b7ff6159ef1ebacd1fdeaaac6a5 (patch)
treedc34592e147f2c235757b08f896a1e980ceaff36 /benchmarks
parentea1350107f9b2c7fe6a62da5e7090c5a43c34b8a (diff)
downloadnumpy-415f327069d26b7ff6159ef1ebacd1fdeaaac6a5.tar.gz
Add initial benchmarks for __array_function__
Diffstat (limited to 'benchmarks')
-rw-r--r--benchmarks/benchmarks/bench_overrides.py61
-rw-r--r--benchmarks/benchmarks/common.py2
2 files changed, 62 insertions, 1 deletions
diff --git a/benchmarks/benchmarks/bench_overrides.py b/benchmarks/benchmarks/bench_overrides.py
new file mode 100644
index 000000000..2cb94c95c
--- /dev/null
+++ b/benchmarks/benchmarks/bench_overrides.py
@@ -0,0 +1,61 @@
+from __future__ import absolute_import, division, print_function
+
+from .common import Benchmark
+
+from numpy.core.overrides import array_function_dispatch
+import numpy as np
+
+
+def _broadcast_to_dispatcher(array, shape, subok=None):
+ return (array,)
+
+
+@array_function_dispatch(_broadcast_to_dispatcher)
+def mock_broadcast_to(array, shape, subok=False):
+ pass
+
+
+def _concatenate_dispatcher(arrays, axis=None, out=None):
+ for array in arrays:
+ yield array
+ if out is not None:
+ yield out
+
+
+@array_function_dispatch(_concatenate_dispatcher)
+def mock_concatenate(arrays, axis=0, out=None):
+ pass
+
+
+class DuckArray(object):
+ def __array_function__(self, func, types, args, kwargs):
+ pass
+
+
+class ArrayFunction(Benchmark):
+
+ def setup(self):
+ self.numpy_array = np.array(1)
+ self.numpy_arrays = [np.array(1), np.array(2)]
+ self.many_arrays = 500 * self.numpy_arrays
+ self.duck_array = DuckArray()
+ self.duck_arrays = [DuckArray(), DuckArray()]
+ self.mixed_arrays = [np.array(1), DuckArray()]
+
+ def time_mock_broadcast_to_numpy(self):
+ mock_broadcast_to(self.numpy_array, ())
+
+ def time_mock_broadcast_to_duck(self):
+ mock_broadcast_to(self.duck_array, ())
+
+ def time_mock_concatenate_numpy(self):
+ mock_concatenate(self.numpy_arrays, axis=0)
+
+ def time_mock_concatenate_many(self):
+ mock_concatenate(self.many_arrays, axis=0)
+
+ def time_mock_concatenate_duck(self):
+ mock_concatenate(self.duck_arrays, axis=0)
+
+ def time_mock_concatenate_mixed(self):
+ mock_concatenate(self.mixed_arrays, axis=0)
diff --git a/benchmarks/benchmarks/common.py b/benchmarks/benchmarks/common.py
index 18a09fd40..d720eaaa8 100644
--- a/benchmarks/benchmarks/common.py
+++ b/benchmarks/benchmarks/common.py
@@ -113,4 +113,4 @@ def get_indexes_rand_():
class Benchmark(object):
- goal_time = 0.25
+ sample_time = 0.25