diff options
author | Stephan Hoyer <shoyer@google.com> | 2018-09-24 11:43:10 -0700 |
---|---|---|
committer | Stephan Hoyer <shoyer@google.com> | 2018-09-24 11:43:10 -0700 |
commit | c0cf6170dc707a742a83f7807b35fa25132480cf (patch) | |
tree | 8e5a0619f624bfbb87ee2ffcdc9593ef286e0bb1 /benchmarks | |
parent | 692d2b4983f27fd04ea5983db1cfe731a23d1bb9 (diff) | |
download | numpy-c0cf6170dc707a742a83f7807b35fa25132480cf.tar.gz |
Revert removal of Benchmark class
Diffstat (limited to 'benchmarks')
-rw-r--r-- | benchmarks/benchmarks/bench_app.py | 6 | ||||
-rw-r--r-- | benchmarks/benchmarks/bench_core.py | 16 | ||||
-rw-r--r-- | benchmarks/benchmarks/bench_function_base.py | 20 | ||||
-rw-r--r-- | benchmarks/benchmarks/bench_indexing.py | 8 | ||||
-rw-r--r-- | benchmarks/benchmarks/bench_io.py | 22 | ||||
-rw-r--r-- | benchmarks/benchmarks/bench_lib.py | 8 | ||||
-rw-r--r-- | benchmarks/benchmarks/bench_linalg.py | 8 | ||||
-rw-r--r-- | benchmarks/benchmarks/bench_ma.py | 10 | ||||
-rw-r--r-- | benchmarks/benchmarks/bench_overrides.py | 4 | ||||
-rw-r--r-- | benchmarks/benchmarks/bench_random.py | 12 | ||||
-rw-r--r-- | benchmarks/benchmarks/bench_reduce.py | 12 | ||||
-rw-r--r-- | benchmarks/benchmarks/bench_shape_base.py | 6 | ||||
-rw-r--r-- | benchmarks/benchmarks/bench_ufunc.py | 18 | ||||
-rw-r--r-- | benchmarks/benchmarks/common.py | 4 |
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 |