FastLED 3.10.6
Loading...
Searching...
No Matches

◆ runWavePerfLoadsOnly()

WavePerfResult fl::wave_perf::runWavePerfLoadsOnly ( u32 W,
u32 H,
u32 iterations,
LaplacianStencil stencil )
inline

Definition at line 110 of file wave_perf_bench.h.

111 {
113 if (!isValidGrid(W, H) || !isValidIterations(iterations)) {
114 return r;
115 }
116 auto sim = makeBenchSim(W, H, stencil);
117 volatile fl::i32 sink = 0;
118 const u32 t0 = fl::micros();
119 for (u32 i = 0; i < iterations; ++i) {
120 fl::i32 acc = 0;
121 for (u32 y = 0; y < H; ++y) {
122 for (u32 x = 0; x < W; ++x) {
123 acc += sim->geti16(static_cast<fl::size>(x),
124 static_cast<fl::size>(y));
125 }
126 }
127 sink += acc;
128 }
129 const u32 t1 = fl::micros();
130 (void)sink;
131 r.success = true;
132 r.total_us = t1 - t0;
133 const double cells_per_update = static_cast<double>(W) * H;
134 r.us_per_update = static_cast<double>(r.total_us)
135 / static_cast<double>(iterations);
136 r.us_per_cell_per_update = r.us_per_update / cells_per_update;
138 ? (1.0e6 / r.us_per_update) : 0.0;
139 return r;
140}
static const int H
Definition PerfDisc.ino:21
static const int W
Definition PerfDisc.ino:20
fl::unique_ptr< WaveSimulation2D_Real > makeBenchSim(u32 W, u32 H, LaplacianStencil stencil) FL_NO_EXCEPT
bool isValidIterations(u32 iterations) FL_NO_EXCEPT
bool isValidGrid(u32 W, u32 H) FL_NO_EXCEPT
fl::u32 micros()
Universal microsecond timer - returns microseconds since system startup.

References fl::FL_NO_EXCEPT, fl::wave_perf::WavePerfResult::fps_at_one_update_per_frame, H, isValidGrid(), isValidIterations(), makeBenchSim(), fl::micros(), fl::wave_perf::WavePerfResult::success, fl::wave_perf::WavePerfResult::total_us, fl::wave_perf::WavePerfResult::us_per_cell_per_update, fl::wave_perf::WavePerfResult::us_per_update, W, fl::x, and fl::y.

+ Here is the call graph for this function: