diff options
-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) |