| 44 | |
| 45 | template <typename F> |
| 46 | static void BM_SwitchRangeOp(benchmark::State& state, F&& op) { |
| 47 | auto s = make(); |
| 48 | int i = 0; |
| 49 | for (auto _: state) { |
| 50 | op(s, i + 1, i); |
| 51 | i = (i + 1) % max_sws; |
| 52 | } |
| 53 | } |
| 54 | |
| 55 | static void BM_SwitchSetRange(benchmark::State& state) { |
| 56 | BM_SwitchOp(state, [](auto& s, auto, bool val) { s.SetRange(1, max_sws, val); }); |