Skip to content

Commit

Permalink
test: remove @test_nowarn testing
Browse files Browse the repository at this point in the history
  • Loading branch information
avik-pal committed Jul 19, 2024
1 parent 4ace37b commit 937efad
Show file tree
Hide file tree
Showing 11 changed files with 29 additions and 31 deletions.
2 changes: 1 addition & 1 deletion test/contrib/debug_tests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@

ps, st = Lux.setup(rng, model_fixed) |> device

@test_nowarn model_fixed(x, ps, st)
@test model_fixed(x, ps, st) isa Any

model_fixed_debug = Lux.Experimental.@debug_mode model_fixed

Expand Down
2 changes: 1 addition & 1 deletion test/distributed/data_distributedtest.jl
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ backend = DistributedUtils.get_distributed_backend(backend_type)
data = randn(rng, Float32, 10)
dcontainer = DistributedUtils.DistributedDataContainer(backend, data)

@test_nowarn dcontainer[1]
@test dcontainer[1] isa Any

rank = DistributedUtils.local_rank(backend)
tworkers = DistributedUtils.total_workers(backend)
Expand Down
4 changes: 2 additions & 2 deletions test/distributed/optimizer_distributedtest.jl
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ st_dopt = Optimisers.setup(dopt, ps)
@test st_dopt.a.state == st_opt.a.state
@test st_dopt.b.state == st_opt.b.state

@test_nowarn DistributedUtils.synchronize!!(backend, st_dopt)
@test DistributedUtils.synchronize!!(backend, st_dopt) isa Any

gs = (a=ones(4), b=ones(4)) |> dev

Expand All @@ -35,4 +35,4 @@ _, ps_opt = Optimisers.update(st_opt, ps, gs)
@test ps_dopt.aps_opt.a atol=1.0e-5 rtol=1.0e-5
@test ps_dopt.bps_opt.b atol=1.0e-5 rtol=1.0e-5

@test_nowarn Optimisers.adjust(st_dopt, 0.1f0)
@test Optimisers.adjust(st_dopt, 0.1f0) isa Any
2 changes: 1 addition & 1 deletion test/distributed/synchronize_distributedtest.jl
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ st_opt = DistributedUtils.synchronize!!(backend, st_opt; root)
opt = Descent(0.001f0)
st_opt = Optimisers.setup(opt, gs)

@test_nowarn DistributedUtils.synchronize!!(backend, st_opt; root)
@test DistributedUtils.synchronize!!(backend, st_opt; root) isa Any

## ComponentArrays
gs = (
Expand Down
4 changes: 2 additions & 2 deletions test/helpers/batched_ad_tests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
ps, st = Lux.setup(Random.default_rng(), model) |> dev

x = randn(Float32, N, 3) |> dev
@test_nowarn model(x, ps, st)
@test first(model(x, ps, st)) isa AbstractArray{<:Any, 3}
end
end

Expand Down Expand Up @@ -103,7 +103,7 @@ end
return sum(abs2, J)
end

@test_nowarn loss_function_batched(model, X, ps, st)
@test loss_function_batched(model, X, ps, st) isa Number
@test loss_function_batched(model, X, ps, st)
loss_function_simple(model, X, ps, st)

Expand Down
2 changes: 1 addition & 1 deletion test/helpers/compact_tests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@
end

@testset "Keyword Arguments with Anonymous Function" begin
model = @test_nowarn @compact(x->@return(x+a+b); a=1, b=2)
model = @compact(x->@return(x+a+b); a=1, b=2)
ps, st = Lux.setup(rng, model) |> device
@test first(model(3, ps, st)) == 1 + 2 + 3
expected_string = """@compact(
Expand Down
4 changes: 1 addition & 3 deletions test/helpers/nestedad_tests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,6 @@ end
return sum(J * vec(jvp_input))
end

@test_nowarn loss_function_vjp(model, X, ps, st, vjp_input)
@test loss_function_vjp(model, X, ps, st, vjp_input) isa Number
@test loss_function_vjp(model, X, ps, st, vjp_input)
loss_function_vjp_jacobian(model, X, ps, st, vjp_input)
Expand All @@ -250,7 +249,6 @@ end
@test ∂x∂x_vjp rtol=1e-3 atol=1e-3
@test check_approx(∂ps, ∂ps_vjp; rtol=1e-3, atol=1e-3)

@test_nowarn loss_function_jvp(model, X, ps, st, jvp_input)
@test loss_function_jvp(model, X, ps, st, jvp_input) isa Number
@test loss_function_jvp(model, X, ps, st, jvp_input)
loss_function_jvp_jacobian(model, X, ps, st, jvp_input)
Expand Down Expand Up @@ -301,7 +299,7 @@ end
nt = (functor=functorABC(rand(rng, 3), rand(rng, 3)), tup=(rand(rng, 3), rand(rng, 3)))
u = (functor=functorABC(rand(rng, 3), rand(rng, 3)), tup=(rand(rng, 3), rand(rng, 3)))

@test_nowarn jacobian_vector_product(ftest, AutoForwardDiff(), nt, u)
@test jacobian_vector_product(ftest, AutoForwardDiff(), nt, u) isa Any
end

@testitem "Nested AD: Issue #743 (eval + gradient)" setup=[SharedTestSetup] tags=[:autodiff] begin
Expand Down
2 changes: 1 addition & 1 deletion test/helpers/stateful_tests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

smodel = StatefulLuxLayer{false}(model, ps, st)
display(smodel)
@test_nowarn smodel(1)
@test smodel(1) isa Any

smodel = StatefulLuxLayer{true}(model, ps, st)
display(smodel)
Expand Down
18 changes: 9 additions & 9 deletions test/layers/conv_tests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -314,19 +314,19 @@ end

@testset "$mode" for (mode, aType, dev, ongpu) in MODES
@testset "Construction" begin
@test_nowarn Upsample(:nearest; scale=2)
@test_nowarn Upsample(:nearest; size=(64, 64))
@test_nowarn Upsample(:bilinear; scale=2)
@test_nowarn Upsample(:bilinear; size=(64, 64))
@test_nowarn Upsample(:trilinear; scale=2)
@test_nowarn Upsample(:trilinear; size=(64, 64))
@test Upsample(:nearest; scale=2) isa Any
@test Upsample(:nearest; size=(64, 64)) isa Any
@test Upsample(:bilinear; scale=2) isa Any
@test Upsample(:bilinear; size=(64, 64)) isa Any
@test Upsample(:trilinear; scale=2) isa Any
@test Upsample(:trilinear; size=(64, 64)) isa Any

@test_throws ArgumentError Upsample(:linear; scale=2)
@test_throws ArgumentError Upsample(:nearest; scale=2, size=(64, 64))
@test_throws ArgumentError Upsample(:nearest)

@test_nowarn Upsample(2)
@test_nowarn Upsample(2, :nearest)
@test Upsample(2) isa Any
@test Upsample(2, :nearest) isa Any
end

@testset "Size Correctness" begin
Expand Down Expand Up @@ -625,7 +625,7 @@ end
x = randn(Float32, 28, 28, 42, 3) |> aType
ps, st = Lux.setup(rng, layer) |> dev

@test_nowarn layer(x, ps, st)
@test layer(x, ps, st) isa Any

x = randn(Float32, 28, 28, 46, 3) |> aType

Expand Down
6 changes: 3 additions & 3 deletions test/layers/normalize_tests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -297,15 +297,15 @@ end
@test_throws ArgumentError Lux.setup(rng, wn)

wn = WeightNorm(c, (:weight,))
@test_nowarn Lux.setup(rng, wn)
@test Lux.setup(rng, wn) isa Any

c = Conv((3, 3), 3 => 3; init_bias=Lux.ones32)

wn = WeightNorm(c, (:weight, :bias))
@test_nowarn Lux.setup(rng, wn)
@test Lux.setup(rng, wn) isa Any

wn = WeightNorm(c, (:weight,))
@test_nowarn Lux.setup(rng, wn)
@test Lux.setup(rng, wn) isa Any
end
end
end
Expand Down
14 changes: 7 additions & 7 deletions test/utils_tests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -95,32 +95,32 @@ end
@test -p_flat == getdata(-ps_c)
@test zero(p_flat) == getdata(zero(ps_c))

@test_nowarn similar(ps_c, 10)
@test_nowarn similar(ps_c)
@test similar(ps_c, 10) isa Any
@test similar(ps_c) isa Any

ps_c_f, ps_c_re = Functors.functor(ps_c)
@test ps_c_f == ps
@test ps_c_re(ps_c_f) == ps_c

# Empty ComponentArray test
@test_nowarn display(ComponentArray(NamedTuple()))
@test display(ComponentArray(NamedTuple())) isa Any
println()

# Optimisers
opt = Adam(0.001f0)
ps_c = ps_c |> device
st_opt = Optimisers.setup(opt, ps_c)

@test_nowarn Optimisers.update(st_opt, ps_c, ps_c)
@test_nowarn Optimisers.update!(st_opt, ps_c, ps_c)
@test Optimisers.update(st_opt, ps_c, ps_c) isa Any
@test Optimisers.update!(st_opt, ps_c, ps_c) isa Any
end

# Ref: https://github.com/LuxDL/Lux.jl/issues/243
nn = Chain(Dense(4, 3), Dense(3, 2))
ps, st = Lux.setup(rng, nn)

l2reg(p) = sum(abs2, ComponentArray(p))
@test_nowarn Zygote.gradient(l2reg, ps)
@test length(Zygote.gradient(l2reg, ps)) == 1
end

@testitem "_init_hidden_state" setup=[SharedTestSetup] tags=[:recurrent_layers] begin
Expand Down Expand Up @@ -277,7 +277,7 @@ end
c = Parallel(+; chain=Chain(; dense_1=Dense(2 => 3), dense_2=Dense(3 => 5)),
dense_3=Dense(5 => 1))

@test_nowarn fmap(println, c)
@test fmap(println, c) isa Any

l = Dense(2 => 2)
new_model = fmap(x -> l, c)
Expand Down

1 comment on commit 937efad

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark Results

Benchmark suite Current: 937efad Previous: 4ace37b Ratio
Dense(2 => 2)/cpu/reverse/ReverseDiff (compiled)/(2, 128) 3669.375 ns 3889.75 ns 0.94
Dense(2 => 2)/cpu/reverse/Zygote/(2, 128) 7200 ns 7213.428571428572 ns 1.00
Dense(2 => 2)/cpu/reverse/Tracker/(2, 128) 21054.5 ns 20608 ns 1.02
Dense(2 => 2)/cpu/reverse/ReverseDiff/(2, 128) 9781.3 ns 9816.3 ns 1.00
Dense(2 => 2)/cpu/reverse/Flux/(2, 128) 8908.6 ns 9185.2 ns 0.97
Dense(2 => 2)/cpu/reverse/SimpleChains/(2, 128) 4449.5 ns 4510.875 ns 0.99
Dense(2 => 2)/cpu/reverse/Enzyme/(2, 128) 1157.9930555555557 ns 1166.159420289855 ns 0.99
Dense(2 => 2)/cpu/forward/NamedTuple/(2, 128) 1171.8985507246377 ns 1111.1946308724832 ns 1.05
Dense(2 => 2)/cpu/forward/ComponentArray/(2, 128) 1185.8125 ns 1187.955223880597 ns 1.00
Dense(2 => 2)/cpu/forward/Flux/(2, 128) 1791.6440677966102 ns 1795.1666666666667 ns 1.00
Dense(2 => 2)/cpu/forward/SimpleChains/(2, 128) 180.02920723226703 ns 179.85854341736695 ns 1.00
Dense(20 => 20)/cpu/reverse/ReverseDiff (compiled)/(20, 128) 17283 ns 17242 ns 1.00
Dense(20 => 20)/cpu/reverse/Zygote/(20, 128) 16841 ns 16641 ns 1.01
Dense(20 => 20)/cpu/reverse/Tracker/(20, 128) 37390 ns 36418 ns 1.03
Dense(20 => 20)/cpu/reverse/ReverseDiff/(20, 128) 28994 ns 28994 ns 1
Dense(20 => 20)/cpu/reverse/Flux/(20, 128) 20027 ns 21290 ns 0.94
Dense(20 => 20)/cpu/reverse/SimpleChains/(20, 128) 17182 ns 17383 ns 0.99
Dense(20 => 20)/cpu/reverse/Enzyme/(20, 128) 4328 ns 4282.285714285715 ns 1.01
Dense(20 => 20)/cpu/forward/NamedTuple/(20, 128) 3870.875 ns 3815.875 ns 1.01
Dense(20 => 20)/cpu/forward/ComponentArray/(20, 128) 3954.875 ns 3921 ns 1.01
Dense(20 => 20)/cpu/forward/Flux/(20, 128) 4847.642857142857 ns 4816.142857142857 ns 1.01
Dense(20 => 20)/cpu/forward/SimpleChains/(20, 128) 1658.1 ns 1651.1 ns 1.00
Conv((3, 3), 3 => 3)/cpu/reverse/ReverseDiff (compiled)/(64, 64, 3, 128) 40009085 ns 38826337.5 ns 1.03
Conv((3, 3), 3 => 3)/cpu/reverse/Zygote/(64, 64, 3, 128) 58044866 ns 57888052 ns 1.00
Conv((3, 3), 3 => 3)/cpu/reverse/Tracker/(64, 64, 3, 128) 81652371 ns 75523456 ns 1.08
Conv((3, 3), 3 => 3)/cpu/reverse/ReverseDiff/(64, 64, 3, 128) 84691568 ns 88301980 ns 0.96
Conv((3, 3), 3 => 3)/cpu/reverse/Flux/(64, 64, 3, 128) 75567907 ns 72229490 ns 1.05
Conv((3, 3), 3 => 3)/cpu/reverse/SimpleChains/(64, 64, 3, 128) 11702113 ns 11634194 ns 1.01
Conv((3, 3), 3 => 3)/cpu/reverse/Enzyme/(64, 64, 3, 128) 6962047.5 ns 6911425 ns 1.01
Conv((3, 3), 3 => 3)/cpu/forward/NamedTuple/(64, 64, 3, 128) 7131554 ns 7082578.5 ns 1.01
Conv((3, 3), 3 => 3)/cpu/forward/ComponentArray/(64, 64, 3, 128) 7068401 ns 6994755 ns 1.01
Conv((3, 3), 3 => 3)/cpu/forward/Flux/(64, 64, 3, 128) 12275161.5 ns 9789325 ns 1.25
Conv((3, 3), 3 => 3)/cpu/forward/SimpleChains/(64, 64, 3, 128) 6382810.5 ns 6381274 ns 1.00
vgg16/cpu/reverse/Zygote/(32, 32, 3, 16) 714086754 ns 706120562 ns 1.01
vgg16/cpu/reverse/Zygote/(32, 32, 3, 64) 2579434858 ns 2529871556 ns 1.02
vgg16/cpu/reverse/Zygote/(32, 32, 3, 2) 148383143 ns 131797096 ns 1.13
vgg16/cpu/reverse/Tracker/(32, 32, 3, 16) 891741497 ns 757974733 ns 1.18
vgg16/cpu/reverse/Tracker/(32, 32, 3, 64) 3088439700 ns 2932092144 ns 1.05
vgg16/cpu/reverse/Tracker/(32, 32, 3, 2) 212058426 ns 189094496 ns 1.12
vgg16/cpu/reverse/Flux/(32, 32, 3, 16) 653749242 ns 663524511.5 ns 0.99
vgg16/cpu/reverse/Flux/(32, 32, 3, 64) 2642538349 ns 2577224378.5 ns 1.03
vgg16/cpu/reverse/Flux/(32, 32, 3, 2) 128699402 ns 125424056 ns 1.03
vgg16/cpu/forward/NamedTuple/(32, 32, 3, 16) 175013829.5 ns 174066006 ns 1.01
vgg16/cpu/forward/NamedTuple/(32, 32, 3, 64) 654368735 ns 653654001 ns 1.00
vgg16/cpu/forward/NamedTuple/(32, 32, 3, 2) 45671588 ns 34513878 ns 1.32
vgg16/cpu/forward/ComponentArray/(32, 32, 3, 16) 165691299 ns 164808835 ns 1.01
vgg16/cpu/forward/ComponentArray/(32, 32, 3, 64) 644989507 ns 634945112.5 ns 1.02
vgg16/cpu/forward/ComponentArray/(32, 32, 3, 2) 45474454 ns 29766865 ns 1.53
vgg16/cpu/forward/Flux/(32, 32, 3, 16) 227248905 ns 187595950 ns 1.21
vgg16/cpu/forward/Flux/(32, 32, 3, 64) 775116259 ns 722751963 ns 1.07
vgg16/cpu/forward/Flux/(32, 32, 3, 2) 40575003.5 ns 37544548 ns 1.08
Conv((3, 3), 64 => 64)/cpu/reverse/ReverseDiff (compiled)/(64, 64, 64, 128) 1266387049.5 ns 1226815927.5 ns 1.03
Conv((3, 3), 64 => 64)/cpu/reverse/Zygote/(64, 64, 64, 128) 1873245890 ns 1859890354 ns 1.01
Conv((3, 3), 64 => 64)/cpu/reverse/Tracker/(64, 64, 64, 128) 2337050962 ns 2339835190 ns 1.00
Conv((3, 3), 64 => 64)/cpu/reverse/ReverseDiff/(64, 64, 64, 128) 2598176961 ns 2525615729 ns 1.03
Conv((3, 3), 64 => 64)/cpu/reverse/Flux/(64, 64, 64, 128) 1906864622.5 ns 1865477869.5 ns 1.02
Conv((3, 3), 64 => 64)/cpu/reverse/Enzyme/(64, 64, 64, 128) 323660356.5 ns 322877161 ns 1.00
Conv((3, 3), 64 => 64)/cpu/forward/NamedTuple/(64, 64, 64, 128) 323114250 ns 320721263 ns 1.01
Conv((3, 3), 64 => 64)/cpu/forward/ComponentArray/(64, 64, 64, 128) 319854782 ns 317208348 ns 1.01
Conv((3, 3), 64 => 64)/cpu/forward/Flux/(64, 64, 64, 128) 431236413 ns 418779532 ns 1.03
Conv((3, 3), 1 => 1)/cpu/reverse/ReverseDiff (compiled)/(64, 64, 1, 128) 11856906 ns 11864932 ns 1.00
Conv((3, 3), 1 => 1)/cpu/reverse/Zygote/(64, 64, 1, 128) 17995791 ns 17886839.5 ns 1.01
Conv((3, 3), 1 => 1)/cpu/reverse/Tracker/(64, 64, 1, 128) 19308830 ns 19045196 ns 1.01
Conv((3, 3), 1 => 1)/cpu/reverse/ReverseDiff/(64, 64, 1, 128) 24002610 ns 23830079.5 ns 1.01
Conv((3, 3), 1 => 1)/cpu/reverse/Flux/(64, 64, 1, 128) 18021078 ns 17899726 ns 1.01
Conv((3, 3), 1 => 1)/cpu/reverse/SimpleChains/(64, 64, 1, 128) 1168729 ns 1148335 ns 1.02
Conv((3, 3), 1 => 1)/cpu/reverse/Enzyme/(64, 64, 1, 128) 2067715 ns 2052685 ns 1.01
Conv((3, 3), 1 => 1)/cpu/forward/NamedTuple/(64, 64, 1, 128) 2082044 ns 2063356 ns 1.01
Conv((3, 3), 1 => 1)/cpu/forward/ComponentArray/(64, 64, 1, 128) 2083795 ns 2066360 ns 1.01
Conv((3, 3), 1 => 1)/cpu/forward/Flux/(64, 64, 1, 128) 2078152 ns 2051643 ns 1.01
Conv((3, 3), 1 => 1)/cpu/forward/SimpleChains/(64, 64, 1, 128) 198179 ns 196415 ns 1.01
Dense(200 => 200)/cpu/reverse/ReverseDiff (compiled)/(200, 128) 294960 ns 289318 ns 1.02
Dense(200 => 200)/cpu/reverse/Zygote/(200, 128) 268370 ns 263239 ns 1.02
Dense(200 => 200)/cpu/reverse/Tracker/(200, 128) 372856 ns 359839 ns 1.04
Dense(200 => 200)/cpu/reverse/ReverseDiff/(200, 128) 414518.5 ns 405253 ns 1.02
Dense(200 => 200)/cpu/reverse/Flux/(200, 128) 278368 ns 272277 ns 1.02
Dense(200 => 200)/cpu/reverse/SimpleChains/(200, 128) 410746 ns 405564 ns 1.01
Dense(200 => 200)/cpu/reverse/Enzyme/(200, 128) 83776 ns 83124 ns 1.01
Dense(200 => 200)/cpu/forward/NamedTuple/(200, 128) 81953 ns 80740 ns 1.02
Dense(200 => 200)/cpu/forward/ComponentArray/(200, 128) 83195 ns 82383 ns 1.01
Dense(200 => 200)/cpu/forward/Flux/(200, 128) 87764 ns 86060 ns 1.02
Dense(200 => 200)/cpu/forward/SimpleChains/(200, 128) 104685 ns 104325 ns 1.00
Conv((3, 3), 16 => 16)/cpu/reverse/ReverseDiff (compiled)/(64, 64, 16, 128) 198244459 ns 197459994 ns 1.00
Conv((3, 3), 16 => 16)/cpu/reverse/Zygote/(64, 64, 16, 128) 329497937.5 ns 327332523.5 ns 1.01
Conv((3, 3), 16 => 16)/cpu/reverse/Tracker/(64, 64, 16, 128) 407311865.5 ns 367989344 ns 1.11
Conv((3, 3), 16 => 16)/cpu/reverse/ReverseDiff/(64, 64, 16, 128) 452728713 ns 439797244.5 ns 1.03
Conv((3, 3), 16 => 16)/cpu/reverse/Flux/(64, 64, 16, 128) 388579645 ns 374931694 ns 1.04
Conv((3, 3), 16 => 16)/cpu/reverse/SimpleChains/(64, 64, 16, 128) 319868232.5 ns 326044951 ns 0.98
Conv((3, 3), 16 => 16)/cpu/reverse/Enzyme/(64, 64, 16, 128) 44289039 ns 44053216 ns 1.01
Conv((3, 3), 16 => 16)/cpu/forward/NamedTuple/(64, 64, 16, 128) 44316868 ns 44122534.5 ns 1.00
Conv((3, 3), 16 => 16)/cpu/forward/ComponentArray/(64, 64, 16, 128) 43960351 ns 43811761 ns 1.00
Conv((3, 3), 16 => 16)/cpu/forward/Flux/(64, 64, 16, 128) 51507810 ns 53017284.5 ns 0.97
Conv((3, 3), 16 => 16)/cpu/forward/SimpleChains/(64, 64, 16, 128) 28435005 ns 27849167 ns 1.02
Dense(2000 => 2000)/cpu/reverse/ReverseDiff (compiled)/(2000, 128) 18968878 ns 18739042.5 ns 1.01
Dense(2000 => 2000)/cpu/reverse/Zygote/(2000, 128) 19614768 ns 19499913 ns 1.01
Dense(2000 => 2000)/cpu/reverse/Tracker/(2000, 128) 23514329 ns 23187751 ns 1.01
Dense(2000 => 2000)/cpu/reverse/ReverseDiff/(2000, 128) 24219437.5 ns 24095441 ns 1.01
Dense(2000 => 2000)/cpu/reverse/Flux/(2000, 128) 19657817 ns 19512675 ns 1.01
Dense(2000 => 2000)/cpu/reverse/Enzyme/(2000, 128) 6533333 ns 6502673 ns 1.00
Dense(2000 => 2000)/cpu/forward/NamedTuple/(2000, 128) 6543909 ns 6533912 ns 1.00
Dense(2000 => 2000)/cpu/forward/ComponentArray/(2000, 128) 6522365 ns 6481314 ns 1.01
Dense(2000 => 2000)/cpu/forward/Flux/(2000, 128) 6506154.5 ns 6489178 ns 1.00

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.