2 #include <benchmark/benchmark.h>
12 void SetUp(const ::benchmark::State& state) {
15 const t_real oversample_ratio = 2;
16 std::function<t_real(t_real)> kernelu, kernelv, ftkernelu, ftkernelv;
17 std::tie(kernelu, kernelv, ftkernelu, ftkernelv) =
20 if (M != state.range(0)) {
24 Gop = purify::operators::init_on_the_fly_gridding_matrix_2d<Vector<t_complex>>(
25 uv_vis.u, uv_vis.v, uv_vis.weights, m_imsizey, m_imsizex, oversample_ratio, kernelu, Ju,
30 void TearDown(const ::benchmark::State& state) {}
35 t_uint m_imsizey = 1024;
36 t_uint m_imsizex = 1024;
37 std::tuple<sopt::OperatorFunction<Vector<t_complex>>, sopt::OperatorFunction<Vector<t_complex>>>
42 const t_real oversample_ratio = 2;
43 const t_uint N = m_imsizex * m_imsizey * oversample_ratio * oversample_ratio;
44 const auto& forward = std::get<0>(Gop);
46 const Vector<t_complex> input = Vector<t_complex>::Random(N);
47 Vector<t_complex> output = Vector<t_complex>::Zero(M);
48 forward(output, input);
49 while (state.KeepRunning()) {
50 auto start = std::chrono::high_resolution_clock::now();
51 forward(output, input);
52 auto end = std::chrono::high_resolution_clock::now();
58 const t_real oversample_ratio = 2;
59 const t_uint N = m_imsizex * m_imsizey * oversample_ratio * oversample_ratio;
60 const auto& backward = std::get<1>(Gop);
62 const Vector<t_complex> input = Vector<t_complex>::Random(M);
63 Vector<t_complex> output = Vector<t_complex>::Zero(N);
64 backward(output, input);
65 while (state.KeepRunning()) {
66 auto start = std::chrono::high_resolution_clock::now();
67 backward(output, input);
68 auto end = std::chrono::high_resolution_clock::now();
75 ->Range(100000, 100000 << 11)
78 ->ReportAggregatesOnly(
true)
79 ->Unit(benchmark::kMillisecond);
84 ->Range(100000, 100000 << 11)
87 ->ReportAggregatesOnly(
true)
88 ->Unit(benchmark::kMillisecond);
void TearDown(const ::benchmark::State &state)
void SetUp(const ::benchmark::State &state)
std::tuple< sopt::OperatorFunction< Vector< t_complex > >, sopt::OperatorFunction< Vector< t_complex > > > Gop
BENCHMARK_DEFINE_F(GridOperatorFixture, Apply)(benchmark
double duration(std::chrono::high_resolution_clock::time_point start, std::chrono::high_resolution_clock::time_point end)
const t_real pi
mathematical constant
utilities::vis_params random_sample_density(const t_int vis_num, const t_real mean, const t_real standard_deviation, const t_real rms_w)
Generates a random visibility coverage.
std::tuple< std::function< t_real(t_real)>, std::function< t_real(t_real)>, std::function< t_real(t_real)>, std::function< t_real(t_real)> > create_kernels(const kernels::kernel kernel_name_, const t_uint Ju_, const t_uint Jv_, const t_real imsizey_, const t_real imsizex_, const t_real oversample_ratio)