1 #include "sph/kernel/Kernel.h" 2 #include "bench/Session.h" 3 #include "math/rng/Rng.h" 4 5 using namespace Sph; 6 7 BENCHMARK("LutKernel sequential", "[kernel]", Benchmark::Context& context) { 8 LutKernel<3> kernel(CubicSpline<3>{}); 9 while (context.running()) { 10 for (Float r = 0.f; r < kernel.radius(); r += 1.e-4_f) { 11 Benchmark::doNotOptimize(kernel.value(Vector(r, 0.f, 0.f), 1.f)); 12 Benchmark::doNotOptimize(kernel.grad(Vector(0.f, r, 0.f), 1.f)); 13 Benchmark::clobberMemory(); 14 } 15 } 16 } 17 18 BENCHMARK("LutKernel random", "[kernel]", Benchmark::Context& context) { 19 LutKernel<3> kernel(CubicSpline<3>{}); 20 UniformRng rng; 21 while (context.running()) { 22 for (Size i = 0; i < 1e4; ++i) { 23 Benchmark::doNotOptimize(kernel.value(Vector(3._f * rng(), 0.f, 0.f), 1.f)); 24 Benchmark::doNotOptimize(kernel.grad(Vector(0.f, 3._f * rng(), 0.f), 1.f)); 25 Benchmark::clobberMemory(); 26 } 27 } 28 } 29