diff options
author | Mark Harfouche <mark.harfouche@gmail.com> | 2018-09-15 12:08:41 -0400 |
---|---|---|
committer | Lars Grueter <lagru@mailbox.org> | 2018-12-15 14:21:26 +0100 |
commit | ba008f405a89d07e170d1b4c893246fb25ccba04 (patch) | |
tree | 8e0dc2ca1d2dd6ed92162c4e6611d649d3927e69 /benchmarks | |
parent | e26c2990c4828d6f7f2f588d75cd01eecafd53f3 (diff) | |
download | numpy-ba008f405a89d07e170d1b4c893246fb25ccba04.tar.gz |
BENCH: Make the pad benchmark pagefault in setup
Diffstat (limited to 'benchmarks')
-rw-r--r-- | benchmarks/benchmarks/bench_lib.py | 26 |
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) |