|
1 | 1 | using NonlinearSolve
|
2 | 2 | using StaticArrays
|
3 |
| -using BenchmarkTools |
4 | 3 | using Test
|
5 | 4 |
|
6 |
| -function benchmark_immutable() |
7 |
| - probN = NonlinearProblem((u,p) -> u .* u .- 2, @SVector[1.0, 1.0]) |
| 5 | +function benchmark_immutable(f, u0) |
| 6 | + probN = NonlinearProblem{false}(f, u0) |
8 | 7 | solver = init(probN, NewtonRaphson(), immutable = true, tol = 1e-9)
|
9 |
| - sol = @btime solve!($solver) |
10 |
| - @test all(sol.u .* sol.u .- 2 .< 1e-9) |
| 8 | + sol = solve!(solver) |
11 | 9 | end
|
12 | 10 |
|
13 |
| -function benchmark_mutable() |
14 |
| - probN = NonlinearProblem((u,p) -> u .* u .- 2, @SVector[1.0, 1.0]) |
| 11 | +function benchmark_mutable(f, u0) |
| 12 | + probN = NonlinearProblem{false}(f, u0) |
15 | 13 | solver = init(probN, NewtonRaphson(), immutable = false, tol = 1e-9)
|
16 |
| - sol = @btime (reinit!($solver, $probN); solve!($solver)) |
17 |
| - @test all(sol.u .* sol.u .- 2 .< 1e-9) |
| 14 | + sol = (reinit!(solver, probN); solve!(solver)) |
18 | 15 | end
|
19 | 16 |
|
20 |
| -function benchmark_scalar() |
21 |
| - probN = NonlinearProblem((u,p) -> u .* u .- 2, 1.0) |
22 |
| - sol = @btime (solve($probN, ScalarNewton())) |
23 |
| - @test sol * sol - 2 < 1e-9 |
| 17 | +function benchmark_scalar(f, u0) |
| 18 | + probN = NonlinearProblem{false}(f, u0) |
| 19 | + sol = (solve(probN, ScalarNewton())) |
24 | 20 | end
|
25 | 21 |
|
26 |
| -benchmark_immutable() |
27 |
| -benchmark_mutable() |
28 |
| -benchmark_scalar() |
| 22 | +f, u0 = (u,p) -> u .* u .- 2, @SVector[1.0, 1.0] |
| 23 | +sf, su0 = (u,p) -> u * u - 2, 1.0 |
| 24 | +sol = benchmark_immutable(f, u0) |
| 25 | +@test all(sol.u .* sol.u .- 2 .< 1e-9) |
| 26 | +sol = benchmark_mutable(f, u0) |
| 27 | +@test all(sol.u .* sol.u .- 2 .< 1e-9) |
| 28 | +sol = benchmark_scalar(sf, su0) |
| 29 | +@test sol * sol - 2 < 1e-9 |
| 30 | + |
| 31 | +@allocated benchmark_immutable(f, u0) |
| 32 | +@allocated benchmark_mutable(f, u0) |
| 33 | +@allocated benchmark_scalar(sf, su0) |
0 commit comments