summaryrefslogtreecommitdiff
path: root/benchmarks
diff options
context:
space:
mode:
authorStephan Hoyer <shoyer@google.com>2018-09-24 11:43:10 -0700
committerStephan Hoyer <shoyer@google.com>2018-09-24 11:43:10 -0700
commitc0cf6170dc707a742a83f7807b35fa25132480cf (patch)
tree8e5a0619f624bfbb87ee2ffcdc9593ef286e0bb1 /benchmarks
parent692d2b4983f27fd04ea5983db1cfe731a23d1bb9 (diff)
downloadnumpy-c0cf6170dc707a742a83f7807b35fa25132480cf.tar.gz
Revert removal of Benchmark class
Diffstat (limited to 'benchmarks')
-rw-r--r--benchmarks/benchmarks/bench_app.py6
-rw-r--r--benchmarks/benchmarks/bench_core.py16
-rw-r--r--benchmarks/benchmarks/bench_function_base.py20
-rw-r--r--benchmarks/benchmarks/bench_indexing.py8
-rw-r--r--benchmarks/benchmarks/bench_io.py22
-rw-r--r--benchmarks/benchmarks/bench_lib.py8
-rw-r--r--benchmarks/benchmarks/bench_linalg.py8
-rw-r--r--benchmarks/benchmarks/bench_ma.py10
-rw-r--r--benchmarks/benchmarks/bench_overrides.py4
-rw-r--r--benchmarks/benchmarks/bench_random.py12
-rw-r--r--benchmarks/benchmarks/bench_reduce.py12
-rw-r--r--benchmarks/benchmarks/bench_shape_base.py6
-rw-r--r--benchmarks/benchmarks/bench_ufunc.py18
-rw-r--r--benchmarks/benchmarks/common.py4
14 files changed, 87 insertions, 67 deletions
diff --git a/benchmarks/benchmarks/bench_app.py b/benchmarks/benchmarks/bench_app.py
index bc217c3ec..ccf6e4c4a 100644
--- a/benchmarks/benchmarks/bench_app.py
+++ b/benchmarks/benchmarks/bench_app.py
@@ -1,11 +1,13 @@
from __future__ import absolute_import, division, print_function
+from .common import Benchmark
+
import numpy as np
from six.moves import xrange
-class LaplaceInplace(object):
+class LaplaceInplace(Benchmark):
params = ['inplace', 'normal']
param_names = ['update']
@@ -51,7 +53,7 @@ class LaplaceInplace(object):
self.run()
-class MaxesOfDots(object):
+class MaxesOfDots(Benchmark):
def setup(self):
np.random.seed(1)
nsubj = 5
diff --git a/benchmarks/benchmarks/bench_core.py b/benchmarks/benchmarks/bench_core.py
index b6cbd9350..26cffcab1 100644
--- a/benchmarks/benchmarks/bench_core.py
+++ b/benchmarks/benchmarks/bench_core.py
@@ -1,9 +1,11 @@
from __future__ import absolute_import, division, print_function
+from .common import Benchmark
+
import numpy as np
-class Core(object):
+class Core(Benchmark):
def setup(self):
self.l100 = range(100)
self.l50 = range(50)
@@ -74,7 +76,7 @@ class Core(object):
np.tril(self.l10x10)
-class Temporaries(object):
+class Temporaries(Benchmark):
def setup(self):
self.amid = np.ones(50000)
self.bmid = np.ones(50000)
@@ -94,7 +96,7 @@ class Temporaries(object):
(self.alarge + self.blarge) - 2
-class CorrConv(object):
+class CorrConv(Benchmark):
params = [[50, 1000, 1e5],
[10, 100, 1000, 1e4],
['valid', 'same', 'full']]
@@ -111,7 +113,7 @@ class CorrConv(object):
np.convolve(self.x1, self.x2, mode=mode)
-class CountNonzero(object):
+class CountNonzero(Benchmark):
param_names = ['numaxes', 'size', 'dtype']
params = [
[1, 2, 3],
@@ -135,7 +137,7 @@ class CountNonzero(object):
self.x.ndim - 1, self.x.ndim - 2))
-class PackBits(object):
+class PackBits(Benchmark):
param_names = ['dtype']
params = [[bool, np.uintp]]
def setup(self, dtype):
@@ -152,7 +154,7 @@ class PackBits(object):
np.packbits(self.d2, axis=1)
-class UnpackBits(object):
+class UnpackBits(Benchmark):
def setup(self):
self.d = np.ones(10000, dtype=np.uint8)
self.d2 = np.ones((200, 1000), dtype=np.uint8)
@@ -167,6 +169,6 @@ class UnpackBits(object):
np.unpackbits(self.d2, axis=1)
-class Indices(object):
+class Indices(Benchmark):
def time_indices(self):
np.indices((1000, 500))
diff --git a/benchmarks/benchmarks/bench_function_base.py b/benchmarks/benchmarks/bench_function_base.py
index 7f217fc90..9ef03262b 100644
--- a/benchmarks/benchmarks/bench_function_base.py
+++ b/benchmarks/benchmarks/bench_function_base.py
@@ -1,9 +1,11 @@
from __future__ import absolute_import, division, print_function
+from .common import Benchmark
+
import numpy as np
-class Histogram1D(object):
+class Histogram1D(Benchmark):
def setup(self):
self.d = np.linspace(0, 100, 100000)
@@ -17,7 +19,7 @@ class Histogram1D(object):
np.histogram(self.d, 10000, (0, 100))
-class Histogram2D(object):
+class Histogram2D(Benchmark):
def setup(self):
self.d = np.linspace(0, 100, 200000).reshape((-1,2))
@@ -31,7 +33,7 @@ class Histogram2D(object):
np.histogramdd(self.d, (10000, 10000), ((0, 100), (0, 100)))
-class Bincount(object):
+class Bincount(Benchmark):
def setup(self):
self.d = np.arange(80000, dtype=np.intp)
self.e = self.d.astype(np.float64)
@@ -43,7 +45,7 @@ class Bincount(object):
np.bincount(self.d, weights=self.e)
-class Median(object):
+class Median(Benchmark):
def setup(self):
self.e = np.arange(10000, dtype=np.float32)
self.o = np.arange(10001, dtype=np.float32)
@@ -67,7 +69,7 @@ class Median(object):
np.median(self.o[:500], overwrite_input=True)
-class Percentile(object):
+class Percentile(Benchmark):
def setup(self):
self.e = np.arange(10000, dtype=np.float32)
self.o = np.arange(10001, dtype=np.float32)
@@ -79,7 +81,7 @@ class Percentile(object):
np.percentile(self.e, [25, 35, 55, 65, 75])
-class Select(object):
+class Select(Benchmark):
def setup(self):
self.d = np.arange(20000)
self.e = self.d.copy()
@@ -93,7 +95,7 @@ class Select(object):
np.select(self.cond_large, ([self.d, self.e] * 10))
-class Sort(object):
+class Sort(Benchmark):
def setup(self):
self.e = np.arange(10000, dtype=np.float32)
self.o = np.arange(10001, dtype=np.float32)
@@ -125,7 +127,7 @@ class Sort(object):
self.o.argsort()
-class SortWorst(object):
+class SortWorst(Benchmark):
def setup(self):
# quicksort median of 3 worst case
self.worst = np.arange(1000000)
@@ -142,7 +144,7 @@ class SortWorst(object):
time_sort_worst.benchmark_name = "bench_function_base.Sort.time_sort_worst"
-class Where(object):
+class Where(Benchmark):
def setup(self):
self.d = np.arange(20000)
self.e = self.d.copy()
diff --git a/benchmarks/benchmarks/bench_indexing.py b/benchmarks/benchmarks/bench_indexing.py
index b058ae597..a62a2050e 100644
--- a/benchmarks/benchmarks/bench_indexing.py
+++ b/benchmarks/benchmarks/bench_indexing.py
@@ -1,6 +1,6 @@
from __future__ import absolute_import, division, print_function
-from .common import get_squares_, get_indexes_, get_indexes_rand_
+from .common import Benchmark, get_squares_, get_indexes_, get_indexes_rand_
from os.path import join as pjoin
import shutil
@@ -11,7 +11,7 @@ import numpy as np
from tempfile import mkdtemp
-class Indexing(object):
+class Indexing(Benchmark):
params = [["indexes_", "indexes_rand_"],
['I', ':,I', 'np.ix_(I, I)'],
['', '=1']]
@@ -38,7 +38,7 @@ class Indexing(object):
self.func()
-class IndexingSeparate(object):
+class IndexingSeparate(Benchmark):
def setup(self):
self.tmp_dir = mkdtemp()
self.fp = memmap(pjoin(self.tmp_dir, 'tmp.dat'),
@@ -58,7 +58,7 @@ class IndexingSeparate(object):
self.fp[self.indexes]
-class IndexingStructured0D(object):
+class IndexingStructured0D(Benchmark):
def setup(self):
self.dt = np.dtype([('a', 'f4', 256)])
diff --git a/benchmarks/benchmarks/bench_io.py b/benchmarks/benchmarks/bench_io.py
index da29cfe73..879f9b69e 100644
--- a/benchmarks/benchmarks/bench_io.py
+++ b/benchmarks/benchmarks/bench_io.py
@@ -1,12 +1,12 @@
from __future__ import absolute_import, division, print_function
-from .common import get_squares
+from .common import Benchmark, get_squares
import numpy as np
from io import StringIO
-class Copy(object):
+class Copy(Benchmark):
params = ["int8", "int16", "float32", "float64",
"complex64", "complex128"]
param_names = ['type']
@@ -35,7 +35,7 @@ class Copy(object):
self.dflat[::2] = 2
-class CopyTo(object):
+class CopyTo(Benchmark):
def setup(self):
self.d = np.ones(50000)
self.e = self.d.copy()
@@ -61,14 +61,14 @@ class CopyTo(object):
np.copyto(self.d, self.e, where=self.im8)
-class Savez(object):
+class Savez(Benchmark):
def setup(self):
self.squares = get_squares()
def time_vb_savez_squares(self):
np.savez('tmp.npz', self.squares)
-class LoadtxtCSVComments(object):
+class LoadtxtCSVComments(Benchmark):
# benchmarks for np.loadtxt comment handling
# when reading in CSV files
@@ -97,7 +97,7 @@ class LoadtxtCSVComments(object):
delimiter=u',')
self.data_comments.seek(0)
-class LoadtxtCSVdtypes(object):
+class LoadtxtCSVdtypes(Benchmark):
# benchmarks for np.loadtxt operating with
# different dtypes parsed / cast from CSV files
@@ -122,7 +122,7 @@ class LoadtxtCSVdtypes(object):
dtype=dtype)
self.csv_data.seek(0)
-class LoadtxtCSVStructured(object):
+class LoadtxtCSVStructured(Benchmark):
# benchmarks for np.loadtxt operating with
# a structured data type & CSV file
@@ -145,7 +145,7 @@ class LoadtxtCSVStructured(object):
self.csv_data.seek(0)
-class LoadtxtCSVSkipRows(object):
+class LoadtxtCSVSkipRows(Benchmark):
# benchmarks for loadtxt row skipping when
# reading in csv file data; a similar benchmark
# is present in the pandas asv suite
@@ -166,7 +166,7 @@ class LoadtxtCSVSkipRows(object):
delimiter=',',
skiprows=skiprows)
-class LoadtxtReadUint64Integers(object):
+class LoadtxtReadUint64Integers(Benchmark):
# pandas has a similar CSV reading benchmark
# modified to suit np.loadtxt
@@ -192,7 +192,7 @@ class LoadtxtReadUint64Integers(object):
np.loadtxt(self.data2)
self.data2.seek(0)
-class LoadtxtUseColsCSV(object):
+class LoadtxtUseColsCSV(Benchmark):
# benchmark selective column reading from CSV files
# using np.loadtxt
@@ -212,7 +212,7 @@ class LoadtxtUseColsCSV(object):
usecols=usecols)
self.csv_data.seek(0)
-class LoadtxtCSVDateTime(object):
+class LoadtxtCSVDateTime(Benchmark):
# benchmarks for np.loadtxt operating with
# datetime data in a CSV file
diff --git a/benchmarks/benchmarks/bench_lib.py b/benchmarks/benchmarks/bench_lib.py
index fa6c56708..e6c91a27c 100644
--- a/benchmarks/benchmarks/bench_lib.py
+++ b/benchmarks/benchmarks/bench_lib.py
@@ -1,13 +1,15 @@
-"""objects for `numpy.lib`."""
+"""Benchmarks for `numpy.lib`."""
from __future__ import absolute_import, division, print_function
+from .common import Benchmark
+
import numpy as np
-class Pad(object):
- """objects for `numpy.pad`."""
+class Pad(Benchmark):
+ """Benchmarks for `numpy.pad`."""
param_names = ["shape", "pad_width", "mode"]
params = [
diff --git a/benchmarks/benchmarks/bench_linalg.py b/benchmarks/benchmarks/bench_linalg.py
index 67d4ce851..a65d510be 100644
--- a/benchmarks/benchmarks/bench_linalg.py
+++ b/benchmarks/benchmarks/bench_linalg.py
@@ -1,11 +1,11 @@
from __future__ import absolute_import, division, print_function
-from .common import get_squares_, get_indexes_rand, TYPES1
+from .common import Benchmark, get_squares_, get_indexes_rand, TYPES1
import numpy as np
-class Eindot(object):
+class Eindot(Benchmark):
def setup(self):
self.a = np.arange(60000.0).reshape(150, 400)
self.ac = self.a.copy()
@@ -73,7 +73,7 @@ class Eindot(object):
np.tensordot(self.a3, self.b3, axes=([1, 0], [0, 1]))
-class Linalg(object):
+class Linalg(Benchmark):
params = [['svd', 'pinv', 'det', 'norm'],
TYPES1]
param_names = ['op', 'type']
@@ -100,7 +100,7 @@ class Linalg(object):
self.func(self.a)
-class Lstsq(object):
+class Lstsq(Benchmark):
def setup(self):
self.a = get_squares_()['float64']
self.b = get_indexes_rand()[:100].astype(np.float64)
diff --git a/benchmarks/benchmarks/bench_ma.py b/benchmarks/benchmarks/bench_ma.py
index 631b793b1..aff78df0a 100644
--- a/benchmarks/benchmarks/bench_ma.py
+++ b/benchmarks/benchmarks/bench_ma.py
@@ -1,9 +1,11 @@
from __future__ import absolute_import, division, print_function
+from .common import Benchmark
+
import numpy as np
-class MA(object):
+class MA(Benchmark):
def setup(self):
self.l100 = range(100)
self.t100 = ([True] * 100)
@@ -18,7 +20,7 @@ class MA(object):
np.ma.masked_array(self.l100, self.t100)
-class Indexing(object):
+class Indexing(Benchmark):
param_names = ['masked', 'ndim', 'size']
params = [[True, False],
[1, 2],
@@ -45,7 +47,7 @@ class Indexing(object):
self.m[self.idx_1d]
-class UFunc(object):
+class UFunc(Benchmark):
param_names = ['a_masked', 'b_masked', 'size']
params = [[True, False],
[True, False],
@@ -77,7 +79,7 @@ class UFunc(object):
np.ma.add(self.a_2d, self.b_2d)
-class Concatenate(object):
+class Concatenate(Benchmark):
param_names = ['mode', 'n']
params = [
['ndarray', 'unmasked',
diff --git a/benchmarks/benchmarks/bench_overrides.py b/benchmarks/benchmarks/bench_overrides.py
index 58ba9be04..2cb94c95c 100644
--- a/benchmarks/benchmarks/bench_overrides.py
+++ b/benchmarks/benchmarks/bench_overrides.py
@@ -1,5 +1,7 @@
from __future__ import absolute_import, division, print_function
+from .common import Benchmark
+
from numpy.core.overrides import array_function_dispatch
import numpy as np
@@ -30,7 +32,7 @@ class DuckArray(object):
pass
-class ArrayFunction(object):
+class ArrayFunction(Benchmark):
def setup(self):
self.numpy_array = np.array(1)
diff --git a/benchmarks/benchmarks/bench_random.py b/benchmarks/benchmarks/bench_random.py
index 240a3cd01..9d84d83d3 100644
--- a/benchmarks/benchmarks/bench_random.py
+++ b/benchmarks/benchmarks/bench_random.py
@@ -1,9 +1,11 @@
from __future__ import absolute_import, division, print_function
+from .common import Benchmark
+
import numpy as np
-class Random(object):
+class Random(Benchmark):
params = ['normal', 'uniform', 'weibull 1', 'binomial 10 0.5',
'poisson 10']
@@ -19,7 +21,7 @@ class Random(object):
self.func(*self.params)
-class Shuffle(object):
+class Shuffle(Benchmark):
def setup(self):
self.a = np.arange(100000)
@@ -27,7 +29,7 @@ class Shuffle(object):
np.random.shuffle(self.a)
-class Randint(object):
+class Randint(Benchmark):
def time_randint_fast(self):
"""Compare to uint32 below"""
@@ -38,7 +40,7 @@ class Randint(object):
np.random.randint(0, 2**30 + 1, size=10**5)
-class Randint_dtype(object):
+class Randint_dtype(Benchmark):
high = {
'bool': 1,
'uint8': 2**7,
@@ -64,7 +66,7 @@ class Randint_dtype(object):
np.random.randint(0, high + 1, size=10**5, dtype=name)
-class Permutation(object):
+class Permutation(Benchmark):
def setup(self):
self.n = 10000
self.a_1d = np.random.random_sample(self.n)
diff --git a/benchmarks/benchmarks/bench_reduce.py b/benchmarks/benchmarks/bench_reduce.py
index 95804666e..ffc148cd2 100644
--- a/benchmarks/benchmarks/bench_reduce.py
+++ b/benchmarks/benchmarks/bench_reduce.py
@@ -1,11 +1,11 @@
from __future__ import absolute_import, division, print_function
-from .common import TYPES1, get_squares
+from .common import Benchmark, TYPES1, get_squares
import numpy as np
-class AddReduce(object):
+class AddReduce(Benchmark):
def setup(self):
self.squares = get_squares().values()
@@ -16,7 +16,7 @@ class AddReduce(object):
[np.add.reduce(a, axis=1) for a in self.squares]
-class AddReduceSeparate(object):
+class AddReduceSeparate(Benchmark):
params = [[0, 1], TYPES1]
param_names = ['axis', 'type']
@@ -27,7 +27,7 @@ class AddReduceSeparate(object):
np.add.reduce(self.a, axis=axis)
-class AnyAll(object):
+class AnyAll(Benchmark):
def setup(self):
# avoid np.zeros's lazy allocation that would
# cause page faults during benchmark
@@ -47,7 +47,7 @@ class AnyAll(object):
self.zeros.any()
-class MinMax(object):
+class MinMax(Benchmark):
params = [np.float32, np.float64, np.intp]
param_names = ['dtype']
@@ -61,7 +61,7 @@ class MinMax(object):
np.max(self.d)
-class SmallReduction(object):
+class SmallReduction(Benchmark):
def setup(self):
self.d = np.ones(100, dtype=np.float32)
diff --git a/benchmarks/benchmarks/bench_shape_base.py b/benchmarks/benchmarks/bench_shape_base.py
index cc6dae987..6edad2ea3 100644
--- a/benchmarks/benchmarks/bench_shape_base.py
+++ b/benchmarks/benchmarks/bench_shape_base.py
@@ -1,9 +1,11 @@
from __future__ import absolute_import, division, print_function
+from .common import Benchmark
+
import numpy as np
-class Block(object):
+class Block(Benchmark):
params = [1, 10, 100]
param_names = ['size']
@@ -67,7 +69,7 @@ class Block(object):
np.block(np.eye(3 * n))
-class Block3D(object):
+class Block3D(Benchmark):
params = [1, 10, 100]
param_names = ['size']
diff --git a/benchmarks/benchmarks/bench_ufunc.py b/benchmarks/benchmarks/bench_ufunc.py
index cc9e6e34d..a7e385f70 100644
--- a/benchmarks/benchmarks/bench_ufunc.py
+++ b/benchmarks/benchmarks/bench_ufunc.py
@@ -1,6 +1,6 @@
from __future__ import absolute_import, division, print_function
-from .common import get_squares_
+from .common import Benchmark, get_squares_
import numpy as np
@@ -27,7 +27,7 @@ for name in dir(np):
print("Missing ufunc %r" % (name,))
-class Broadcast(object):
+class Broadcast(Benchmark):
def setup(self):
self.d = np.ones((50000, 100), dtype=np.float64)
self.e = np.ones((100,), dtype=np.float64)
@@ -36,7 +36,7 @@ class Broadcast(object):
self.d - self.e
-class UFunc(object):
+class UFunc(Benchmark):
params = [ufuncs]
param_names = ['ufunc']
timeout = 10
@@ -60,7 +60,7 @@ class UFunc(object):
[self.f(*arg) for arg in self.args]
-class Custom(object):
+class Custom(Benchmark):
def setup(self):
self.b = np.ones(20000, dtype=bool)
@@ -77,7 +77,7 @@ class Custom(object):
(self.b | self.b)
-class CustomInplace(object):
+class CustomInplace(Benchmark):
def setup(self):
self.c = np.ones(500000, dtype=np.int8)
self.i = np.ones(150000, dtype=np.int32)
@@ -116,7 +116,7 @@ class CustomInplace(object):
1. + self.d + 1.
-class CustomScalar(object):
+class CustomScalar(Benchmark):
params = [np.float32, np.float64]
param_names = ['dtype']
@@ -136,7 +136,7 @@ class CustomScalar(object):
(self.d < 1)
-class Scalar(object):
+class Scalar(Benchmark):
def setup(self):
self.x = np.asarray(1.0)
self.y = np.asarray((1.0 + 1j))
@@ -164,7 +164,7 @@ class ArgPack(object):
))
-class ArgParsing(object):
+class ArgParsing(Benchmark):
# In order to benchmark the speed of argument parsing, all but the
# out arguments are chosen such that they have no effect on the
# calculation. In particular, subok=True and where=True are
@@ -189,7 +189,7 @@ class ArgParsing(object):
np.add(*arg_pack.args, **arg_pack.kwargs)
-class ArgParsingReduce(object):
+class ArgParsingReduce(Benchmark):
# In order to benchmark the speed of argument parsing, all but the
# out arguments are chosen such that they have minimal effect on the
# calculation.
diff --git a/benchmarks/benchmarks/common.py b/benchmarks/benchmarks/common.py
index 84cb30461..d720eaaa8 100644
--- a/benchmarks/benchmarks/common.py
+++ b/benchmarks/benchmarks/common.py
@@ -110,3 +110,7 @@ def get_indexes_rand_():
indexes_rand = get_indexes_rand()
indexes_rand_ = indexes_rand[indexes_rand < nxs]
return indexes_rand_
+
+
+class Benchmark(object):
+ sample_time = 0.25