diff options
author | Stephan Hoyer <shoyer@google.com> | 2018-09-21 18:15:09 -0700 |
---|---|---|
committer | Stephan Hoyer <shoyer@google.com> | 2018-09-21 18:30:22 -0700 |
commit | 415f327069d26b7ff6159ef1ebacd1fdeaaac6a5 (patch) | |
tree | dc34592e147f2c235757b08f896a1e980ceaff36 /benchmarks | |
parent | ea1350107f9b2c7fe6a62da5e7090c5a43c34b8a (diff) | |
download | numpy-415f327069d26b7ff6159ef1ebacd1fdeaaac6a5.tar.gz |
Add initial benchmarks for __array_function__
Diffstat (limited to 'benchmarks')
-rw-r--r-- | benchmarks/benchmarks/bench_overrides.py | 61 | ||||
-rw-r--r-- | benchmarks/benchmarks/common.py | 2 |
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 |