summaryrefslogtreecommitdiff
path: root/benchmarks
diff options
context:
space:
mode:
authorMark Harfouche <mark.harfouche@gmail.com>2018-09-15 12:08:41 -0400
committerLars Grueter <lagru@mailbox.org>2018-12-15 14:21:26 +0100
commitba008f405a89d07e170d1b4c893246fb25ccba04 (patch)
tree8e0dc2ca1d2dd6ed92162c4e6611d649d3927e69 /benchmarks
parente26c2990c4828d6f7f2f588d75cd01eecafd53f3 (diff)
downloadnumpy-ba008f405a89d07e170d1b4c893246fb25ccba04.tar.gz
BENCH: Make the pad benchmark pagefault in setup
Diffstat (limited to 'benchmarks')
-rw-r--r--benchmarks/benchmarks/bench_lib.py26
1 files changed, 19 insertions, 7 deletions
diff --git a/benchmarks/benchmarks/bench_lib.py b/benchmarks/benchmarks/bench_lib.py
index e6c91a27c..05d6a4aae 100644
--- a/benchmarks/benchmarks/bench_lib.py
+++ b/benchmarks/benchmarks/bench_lib.py
@@ -13,16 +13,28 @@ class Pad(Benchmark):
param_names = ["shape", "pad_width", "mode"]
params = [
- [(1000,), (10, 100), (10, 10, 10)],
- [1, 3, (0, 5)],
- ["constant", "edge", "linear_ramp", "mean", "reflect", "wrap"],
+ [(1000,),
+ (10, 100),
+ (10, 10, 10),
+ # 50 * 512 * 512 = 13 million points = 46 MB. should be a good
+ # out of cache describing a typical usecase
+ (50, 512, 512)],
+ [1,
+ 3,
+ (0, 5)],
+ ["constant",
+ "edge", "linear_ramp",
+ # mean/median/minimum/maximum all use the same code path
+ "mean",
+ # reflect/symmetric share alot of the code path
+ "reflect",
+ "wrap"],
]
def setup(self, shape, pad_width, mode):
- # avoid np.zeros or np.empty's lazy allocation.
- # np.full causes pagefaults to occur during setup
- # instead of during the benchmark
- self.array = np.full(shape, 0)
+ # Make sure to fill the array to make the OS page fault
+ # in the setup phase and not the timed phase
+ self.array = np.full(shape, fill_value=1)
def time_pad(self, shape, pad_width, mode):
np.pad(self.array, pad_width, mode)