diff benchmark/benchmarks.jl @ 1198:5d4a15d6118f tooling/benchmarks

Add some actual benchmarks
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 31 Jan 2023 20:40:18 +0100
parents 1aca445216b8
children f095c02081eb
line wrap: on
line diff
--- a/benchmark/benchmarks.jl	Tue Jan 31 20:35:29 2023 +0100
+++ b/benchmark/benchmarks.jl	Tue Jan 31 20:40:18 2023 +0100
@@ -1,12 +1,70 @@
 using BenchmarkTools
-using Random
+using Sbplib
+using Sbplib.Grids
+using Sbplib.SbpOperators
 
 const SUITE = BenchmarkGroup()
 
-SUITE["utf8"] = BenchmarkGroup(["string", "unicode"])
-teststr = String(join(rand(MersenneTwister(1), 'a':'d', 10^4)))
-SUITE["utf8"]["replace"] = @benchmarkable replace($teststr, "a" => "b")
-SUITE["utf8"]["join"] = @benchmarkable join($teststr, $teststr)
-SUITE["utf8"]["plots"] = BenchmarkGroup()
+
+sz(d) = ntuple(i->100, d)
+ll(d) = ntuple(i->0., d)
+lu(d) = ntuple(i->1., d)
+
+g1 = EquidistantGrid(sz(1),ll(1),lu(1))
+g2 = EquidistantGrid(sz(2),ll(2),lu(2))
+g3 = EquidistantGrid(sz(3),ll(3),lu(3))
+
+v1 = rand(sz(1)...)
+v2 = rand(sz(2)...)
+v3 = rand(sz(3)...)
+
+u1 = rand(sz(1)...)
+u2 = rand(sz(2)...)
+u3 = rand(sz(3)...)
+
+stencil_set = read_stencil_set(joinpath(sbp_operators_path(),"standard_diagonal.toml"); order=4)
+
+SUITE["derivatives"] = BenchmarkGroup()
+
+
+SUITE["derivatives"]["first_derivative"] = BenchmarkGroup()
+
+D₁ = first_derivative(g1,stencil_set)
+SUITE["derivatives"]["first_derivative"]["1D"] = @benchmarkable $u1 .= $D₁*$v1
+
+Dx = first_derivative(g2,stencil_set,1)
+Dy = first_derivative(g2,stencil_set,2)
+SUITE["derivatives"]["first_derivative"]["2D"] = BenchmarkGroup()
+SUITE["derivatives"]["first_derivative"]["2D"]["x"] = @benchmarkable $u2 .= $Dx*$v2
+SUITE["derivatives"]["first_derivative"]["2D"]["y"] = @benchmarkable $u2 .= $Dy*$v2
+
+Dx = first_derivative(g3,stencil_set,1)
+Dy = first_derivative(g3,stencil_set,2)
+Dz = first_derivative(g3,stencil_set,3)
+SUITE["derivatives"]["first_derivative"]["3D"] = BenchmarkGroup()
+SUITE["derivatives"]["first_derivative"]["3D"]["x"] = @benchmarkable $u3 .= $Dx*$v3
+SUITE["derivatives"]["first_derivative"]["3D"]["y"] = @benchmarkable $u3 .= $Dy*$v3
+SUITE["derivatives"]["first_derivative"]["3D"]["z"] = @benchmarkable $u3 .= $Dz*$v3
+
+
+SUITE["derivatives"]["second_derivative"] = BenchmarkGroup()
+
+D₁ = second_derivative(g1,stencil_set)
+SUITE["derivatives"]["second_derivative"]["1D"] = @benchmarkable $u1 .= $D₁*$v1
+
+Dx = second_derivative(g2,stencil_set,1)
+Dy = second_derivative(g2,stencil_set,2)
+SUITE["derivatives"]["second_derivative"]["2D"] = BenchmarkGroup()
+SUITE["derivatives"]["second_derivative"]["2D"]["x"] = @benchmarkable $u2 .= $Dx*$v2
+SUITE["derivatives"]["second_derivative"]["2D"]["y"] = @benchmarkable $u2 .= $Dy*$v2
+
+Dx = second_derivative(g3,stencil_set,1)
+Dy = second_derivative(g3,stencil_set,2)
+Dz = second_derivative(g3,stencil_set,3)
+SUITE["derivatives"]["second_derivative"]["3D"] = BenchmarkGroup()
+SUITE["derivatives"]["second_derivative"]["3D"]["x"] = @benchmarkable $u3 .= $Dx*$v3
+SUITE["derivatives"]["second_derivative"]["3D"]["y"] = @benchmarkable $u3 .= $Dy*$v3
+SUITE["derivatives"]["second_derivative"]["3D"]["z"] = @benchmarkable $u3 .= $Dz*$v3
+
 
 SUITE