summaryrefslogtreecommitdiff
path: root/benchmarks
diff options
context:
space:
mode:
Diffstat (limited to 'benchmarks')
-rw-r--r--benchmarks/benchmarks/bench_lib.py61
-rw-r--r--benchmarks/benchmarks/bench_ufunc.py2
2 files changed, 62 insertions, 1 deletions
diff --git a/benchmarks/benchmarks/bench_lib.py b/benchmarks/benchmarks/bench_lib.py
index 7a6b3f01d..f65a96dad 100644
--- a/benchmarks/benchmarks/bench_lib.py
+++ b/benchmarks/benchmarks/bench_lib.py
@@ -54,3 +54,64 @@ class Pad(Benchmark):
def time_pad(self, shape, pad_width, mode):
np.pad(self.array, pad_width, mode)
+
+class Nan(Benchmark):
+ """Benchmarks for nan functions"""
+
+ param_names = ["array_size", "percent_nans"]
+ params = [
+ # sizes of the 1D arrays
+ [200, int(2e5)],
+ # percent of np.nan in arrays
+ [0, 0.1, 2., 50., 90.],
+ ]
+
+ def setup(self, array_size, percent_nans):
+ np.random.seed(123)
+ # produce a randomly shuffled array with the
+ # approximate desired percentage np.nan content
+ base_array = np.random.uniform(size=array_size)
+ base_array[base_array < percent_nans / 100.] = np.nan
+ self.arr = base_array
+
+ def time_nanmin(self, array_size, percent_nans):
+ np.nanmin(self.arr)
+
+ def time_nanmax(self, array_size, percent_nans):
+ np.nanmax(self.arr)
+
+ def time_nanargmin(self, array_size, percent_nans):
+ np.nanargmin(self.arr)
+
+ def time_nanargmax(self, array_size, percent_nans):
+ np.nanargmax(self.arr)
+
+ def time_nansum(self, array_size, percent_nans):
+ np.nansum(self.arr)
+
+ def time_nanprod(self, array_size, percent_nans):
+ np.nanprod(self.arr)
+
+ def time_nancumsum(self, array_size, percent_nans):
+ np.nancumsum(self.arr)
+
+ def time_nancumprod(self, array_size, percent_nans):
+ np.nancumprod(self.arr)
+
+ def time_nanmean(self, array_size, percent_nans):
+ np.nanmean(self.arr)
+
+ def time_nanvar(self, array_size, percent_nans):
+ np.nanvar(self.arr)
+
+ def time_nanstd(self, array_size, percent_nans):
+ np.nanstd(self.arr)
+
+ def time_nanmedian(self, array_size, percent_nans):
+ np.nanmedian(self.arr)
+
+ def time_nanquantile(self, array_size, percent_nans):
+ np.nanquantile(self.arr, q=0.2)
+
+ def time_nanpercentile(self, array_size, percent_nans):
+ np.nanpercentile(self.arr, q=50)
diff --git a/benchmarks/benchmarks/bench_ufunc.py b/benchmarks/benchmarks/bench_ufunc.py
index a7e385f70..62e70782d 100644
--- a/benchmarks/benchmarks/bench_ufunc.py
+++ b/benchmarks/benchmarks/bench_ufunc.py
@@ -15,7 +15,7 @@ ufuncs = ['abs', 'absolute', 'add', 'arccos', 'arccosh', 'arcsin', 'arcsinh',
'isinf', 'isnan', 'isnat', 'lcm', 'ldexp', 'left_shift', 'less',
'less_equal', 'log', 'log10', 'log1p', 'log2', 'logaddexp',
'logaddexp2', 'logical_and', 'logical_not', 'logical_or',
- 'logical_xor', 'maximum', 'minimum', 'mod', 'modf', 'multiply',
+ 'logical_xor', 'matmul', 'maximum', 'minimum', 'mod', 'modf', 'multiply',
'negative', 'nextafter', 'not_equal', 'positive', 'power',
'rad2deg', 'radians', 'reciprocal', 'remainder', 'right_shift',
'rint', 'sign', 'signbit', 'sin', 'sinh', 'spacing', 'sqrt',