Skip to content

Commit 838d48e

Browse files
committed
Add various benchmarks
1 parent 1bf8152 commit 838d48e

File tree

9 files changed

+265
-4
lines changed

9 files changed

+265
-4
lines changed

benchmark/autofill.jl

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Autofill around paths, first with coarse grid, then with fine grid
2+
function coarse_and_fine_autofill()
3+
cs = CoordinateSystem("autofill_bench", nm)
4+
pa = Path(nm)
5+
pa.metadata = SemanticMeta(:metal_negative)
6+
bspline!(pa, [Point(1000μm, 1000μm)], 90°, Paths.SimpleCPW(10μm, 6μm))
7+
meander!(pa, 6000μm, 500μm, 200μm, -180°)
8+
bspline!(pa, [Point(4000μm, 0μm)], 0°)
9+
# Place two copies of paths, one rotated
10+
addref!(cs, pa)
11+
addref!(cs, pa, Point(-500μm, 0μm), rot=90°)
12+
13+
# Autofill grids
14+
coarse_grid_x = (-3000:250:5000)μm
15+
coarse_grid_y = (-1000:250:5000)μm
16+
fine_grid_x = (-3000:25:5000)μm
17+
fine_grid_y = (-1000:25:5000)μm
18+
19+
# Coordinate systems holding "dummy" geometry (the thing filling space)
20+
coarse_dummy = CoordinateSystem("coarse", nm)
21+
place!(coarse_dummy, centered(Rounded(Rectangle(100μm, 100μm), 50μm)), :metal_negative)
22+
fine_dummy = CoordinateSystem("fine", nm)
23+
place!(fine_dummy, centered(Rounded(Rectangle(10μm, 10μm), 5μm)), :metal_negative)
24+
25+
# Autofill
26+
autofill!(cs, coarse_dummy, coarse_grid_x, coarse_grid_y, make_halo(150μm))
27+
autofill!(cs, fine_dummy, fine_grid_x, fine_grid_y, make_halo(50μm))
28+
return
29+
end
30+
31+
SUITE["autofill"] = @benchmarkable coarse_and_fine_autofill()

benchmark/benchmarks.jl

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
using Test, BenchmarkTools
2-
const SUITE = BenchmarkGroup()
3-
42
using DeviceLayout, Pkg, FileIO, Unitful, DeviceLayout.PreferredUnits
3+
using DeviceLayout.SchematicDrivenLayout
4+
import Random: default_rng, rand, seed!
5+
56
const um = μm
7+
const SUITE = BenchmarkGroup()
68

7-
include(joinpath(@__DIR__, "clipping.jl"))
9+
include("autofill.jl")
10+
include("bounds.jl")
11+
include("clipping.jl")
12+
include("curves.jl")
13+
include("intersect.jl")
14+
include("polygons.jl")
15+
include("schematic.jl")

benchmark/bounds.jl

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
SUITE["bounds"] = BenchmarkGroup()
2+
SUITE["flatten"] = BenchmarkGroup()
3+
4+
rng = seed!(default_rng(), 111)
5+
# Generate rectangles from random points
6+
num_rects = 1_000
7+
p1s = reinterpret(Point{Int}, rand(Int, 2, num_rects))
8+
p2s = reinterpret(Point{Int}, rand(Int, 2, num_rects))
9+
random_rectangles = [Rectangle(p1, p2) for (p1, p2) in zip(p1s, p2s)]
10+
# Circles around points
11+
random_circles = [circle_polygon(1.0, 10°) for p1 in p1s]
12+
13+
# Cell with same circle coordinate system referenced many times at top level
14+
c_shallow = Cell{Float64}("shallow")
15+
c_circ = Cell{Float64}("circle")
16+
render!(c_circ, circle_polygon(10.0, 10°))
17+
rots = rand(num_rects) * 2π
18+
for (p1, rot) in zip(p1s, rots)
19+
addref!(c_shallow, c_circ, p1, rot=rot)
20+
end
21+
22+
# Cell with reference to a circle coordinate systems holding a reference to another
23+
# and so on to `num_rects` depth
24+
c_nested = Cell{Float64}("nested")
25+
rots = rand(num_rects) * 2π
26+
nextcell = c_nested
27+
for (p1, rot) in zip(p1s, rots)
28+
global nextcell
29+
c = Cell{Float64}(uniquename("nested"))
30+
addref!(nextcell, c, p1, rot=rot)
31+
nextcell = c
32+
render!(nextcell, circle_polygon(10.0, 10°))
33+
end
34+
35+
# Array reference with around 1000 circles
36+
c_arrayed = Cell{Float64}("arrayed")
37+
addarr!(
38+
c_arrayed,
39+
c_circ,
40+
numrows=31,
41+
numcols=31,
42+
deltarow=Point(0.0, 10.0),
43+
deltacol=Point(10.0, 0.0)
44+
)
45+
46+
SUITE["bounds"]["random_rectangles"] = @benchmarkable bounds($random_rectangles)
47+
SUITE["bounds"]["random_circles"] = @benchmarkable bounds($random_circles)
48+
SUITE["bounds"]["shallow_references"] = @benchmarkable bounds($c_shallow)
49+
SUITE["bounds"]["nested_references"] = @benchmarkable bounds($c_nested)
50+
51+
SUITE["flatten"]["shallow_references"] = @benchmarkable flatten($c_shallow)
52+
SUITE["flatten"]["nested_references"] = @benchmarkable flatten($c_nested)
53+
SUITE["flatten"]["array_reference"] = @benchmarkable flatten($c_arrayed)

benchmark/clipping.jl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
SUITE["clipping"] = BenchmarkGroup()
22
SUITE["clipping"]["difference2d"] = BenchmarkGroup()
33

4+
# Differences using various pregenerated square arrays
45
for name in [
56
:difference2d_100_square,
67
:difference2d_961_square,
@@ -27,3 +28,17 @@ c = element_metadata(difference2d_8000_skew)
2728
a = splice!(b, findall(m -> m == GDSMeta(0, 0), c))
2829

2930
SUITE["clipping"]["difference2d"]["8000_skew"] = @benchmarkable difference2d($(a), $(b))
31+
32+
# Offset a hexagon then take the difference across some overlapping copies
33+
function offset_difference()
34+
c = Cell{Float64}("test")
35+
poly = circle_polygon(1.5, 60°)
36+
render!(c, poly)
37+
ref = aref(c, Point(-3.0, 5.0), nc=4, deltacol=Point(2.0, 0.0))
38+
els = [poly; elements(flatten(ref))]
39+
off = offset(els, 0.2)
40+
boo = difference2d(off, els)
41+
return render!(c, boo, GDSMeta(1)) # Render to force interiorcuts
42+
end
43+
44+
SUITE["clipping"]["difference2d_offset"] = @benchmarkable offset_difference()

benchmark/curves.jl

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
SUITE["curves"] = BenchmarkGroup()
2+
3+
# Build and render turns
4+
function turns()
5+
c = Cell{Float64}("test")
6+
turn_path = Path{Float64}()
7+
for i = 1:10
8+
turn!(turn_path, 45°, 20.0 * i, Paths.CPW(10.0, 6.0))
9+
turn!(turn_path, -45°, 20.0 * i)
10+
end
11+
return render!(c, turn_path, GDSMeta())
12+
end
13+
14+
# Build and render B-splines
15+
function bsplines()
16+
c = Cell{Float64}("test")
17+
bspline_path = Path{Float64}()
18+
for i = 1:10
19+
bspline!(
20+
bspline_path,
21+
[p0(bspline_path) + Point(20 * i, 10 * i)],
22+
0°,
23+
Paths.CPW(10.0, 6.0),
24+
endpoints_speed=20.0 * i
25+
)
26+
end
27+
return render!(c, bspline_path, GDSMeta())
28+
end
29+
30+
# Approximate offset curves with B-splines
31+
function offset_bspline_approx()
32+
bspline_path = Path{Float64}()
33+
for i = 1:10
34+
bspline!(
35+
bspline_path,
36+
[p0(bspline_path) + Point(20 * i, 10 * i^2)],
37+
0°,
38+
Paths.CPW(10.0, 6.0),
39+
endpoints_speed=20.0 * i
40+
)
41+
Paths.bspline_approximation(Paths.offset(bspline_path[end].seg, 11.0))
42+
end
43+
end
44+
45+
SUITE["curves"]["turns_render"] = @benchmarkable turns()
46+
SUITE["curves"]["bsplines_render"] = @benchmarkable bsplines()
47+
SUITE["curves"]["offset_bspline_approximation"] = @benchmarkable offset_bspline_approx()

benchmark/intersect.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Crossing vertical and horizontal paths
2+
paths_vert = [Path(i * 0.1mm, (-1)^(i + 1) * (1mm), α0=(-1)^i * π / 2) for i = -5:5]
3+
paths_horiz = [Path((-1)^(i) * (1mm), i * 0.1mm, α0=(-1)^i * π / 2 + π / 2) for i = -5:5]
4+
5+
sty = Paths.SimpleCPW(10μm, 6μm)
6+
straight!.(paths_vert, 2mm, Ref(sty))
7+
straight!.(paths_horiz, 2mm, Ref(sty))
8+
all_paths = vcat(paths_vert, paths_horiz)
9+
10+
SUITE["intersection"] = BenchmarkGroup()
11+
SUITE["intersection"]["straight_lines"] =
12+
@benchmarkable Intersect.prepared_intersections($all_paths)

benchmark/polygons.jl

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
SUITE["polygons"] = BenchmarkGroup()
2+
SUITE["polygons"]["circles"] = BenchmarkGroup()
3+
SUITE["polygons"]["rectangles"] = BenchmarkGroup()
4+
5+
# Render and optionally export n rectangles
6+
function rectangles(n; output_dir=nothing)
7+
c = Cell{Float64}("rectangles")
8+
for i = 1:n
9+
render!(c, Rectangle(Point(i, 0.0), Point(i + 1, 1.0)))
10+
end
11+
return !isnothing(output_dir) && save(joinpath(output_dir, "$(n)_rectangles.gds"), c)
12+
end
13+
14+
# As above but with units
15+
function rectangles_units(n, unit; output_dir=nothing)
16+
um = uconvert(unit, DeviceLayout.onemicron(1unit))
17+
c = Cell{typeof(1.0nm)}("rectangles") # coordinatetype(c) may or may not be same as unit
18+
for i = 1:n
19+
render!(c, Rectangle(Point(i * um, 0 * um), Point((i + 1) * um, 1 * um)))
20+
end
21+
return !isnothing(output_dir) &&
22+
save(joinpath(output_dir, "$(n)_rectangles_units.gds"), c)
23+
end
24+
25+
# Render circles using `circle_polygon` to calculate polygon points directly
26+
# (use ~maxiumum number of points for single GDSII polygon -- other extreme from rectangles)
27+
function circles_direct(n; output_dir=nothing)
28+
c = Cell{Float64}("circles")
29+
for i = 1:n
30+
render!(c, Point(i, 0.0) + circle_polygon(1, 2π / 8000))
31+
end
32+
return !isnothing(output_dir) && save(joinpath(output_dir, "$(n)_circles.gds"), c)
33+
end
34+
35+
# As above but with units
36+
function circles_direct_units(n, unit; output_dir=nothing)
37+
um = uconvert(unit, DeviceLayout.onemicron(1unit))
38+
c = Cell{typeof(1.0nm)}("circles") # coordinatetype(c) may or may not be same as unit
39+
for i = 1:n
40+
render!(c, Point(i * um, 0.0 * um) + circle_polygon(1 * um, 2π / 8000))
41+
end
42+
return !isnothing(output_dir) && save(joinpath(output_dir, "$(n)_circles_units.gds"), c)
43+
end
44+
45+
# Render circles using `Circle` entity and `Δθ` keyword option for discretization
46+
function circles_entity_delta(n; output_dir=nothing)
47+
c = Cell{Float64}("circles")
48+
for i = 1:n
49+
render!(c, Circle(Point(i, 0.0), 1.0), Δθ=2π / 8000)
50+
end
51+
return !isnothing(output_dir) && save(joinpath(output_dir, "$(n)_circles_delta.gds"), c)
52+
end
53+
54+
# As above but using `atol` for discretization with the same number of points
55+
function circles_entity_atol(n; output_dir=nothing)
56+
c = Cell{Float64}("circles")
57+
for i = 1:n
58+
render!(c, Circle(Point(i, 0.0), 1.0), atol=4e-7)#, atol=7.714e-8) # 7999 points
59+
end
60+
return !isnothing(output_dir) && save(joinpath(output_dir, "$(n)_circles_atol.gds"), c)
61+
end
62+
63+
dir = mktempdir()
64+
SUITE["polygons"]["rectangles"]["render"] = @benchmarkable rectangles(10_000)
65+
SUITE["polygons"]["rectangles"]["render_gds"] =
66+
@benchmarkable rectangles(10_000, output_dir=$dir)
67+
SUITE["polygons"]["rectangles"]["render_units"] =
68+
@benchmarkable rectangles_units(10_000, $nm)
69+
SUITE["polygons"]["rectangles"]["render_units_gds"] =
70+
@benchmarkable rectangles_units(10_000, $nm, output_dir=$dir)
71+
SUITE["polygons"]["rectangles"]["render_convertunits"] =
72+
@benchmarkable rectangles_units(10_000, $μm)
73+
SUITE["polygons"]["circles"]["direct"] = @benchmarkable circles_direct(1_000)
74+
SUITE["polygons"]["circles"]["direct_gds"] =
75+
@benchmarkable circles_direct(1_000, output_dir=$dir)
76+
SUITE["polygons"]["circles"]["direct_units"] =
77+
@benchmarkable circles_direct_units(1_000, $nm)
78+
SUITE["polygons"]["circles"]["direct_units_gds"] =
79+
@benchmarkable circles_direct_units(1_000, $nm, output_dir=$dir)
80+
SUITE["polygons"]["circles"]["entity_delta"] = @benchmarkable circles_entity_delta(1_000)
81+
SUITE["polygons"]["circles"]["entity_atol"] = @benchmarkable circles_entity_atol(1_000)

benchmark/schematic.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Schematic with chain of spacers rotated at 45 degrees
2+
g = SchematicGraph("test")
3+
lastnode = add_node!(g, Spacer{Float64}(p1=Point(10.0, 10.0)))
4+
for i = 1:100
5+
global lastnode
6+
lastnode = fuse!(
7+
g,
8+
lastnode => :p1_east,
9+
Spacer{Float64}(p1=Point(10.0, 10.0)) => :p0_southwest
10+
)
11+
end
12+
13+
SUITE["schematic"] = BenchmarkGroup()
14+
SUITE["schematic"]["plan"] = @benchmarkable plan($g; log_dir=nothing)

benchmark/tune.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[{"Julia":"1.6.0-rc2","BenchmarkTools":"0.4.3"},[["BenchmarkGroup",{"data":{"clipping":["BenchmarkGroup",{"data":{"difference2d":["BenchmarkGroup",{"data":{"100_square":["BenchmarkTools.Parameters",{"gctrial":true,"time_tolerance":0.05,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"3600_square":["BenchmarkTools.Parameters",{"gctrial":true,"time_tolerance":0.05,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"961_square":["BenchmarkTools.Parameters",{"gctrial":true,"time_tolerance":0.05,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"19881_square":["BenchmarkTools.Parameters",{"gctrial":true,"time_tolerance":0.05,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"8000_skew":["BenchmarkTools.Parameters",{"gctrial":true,"time_tolerance":0.05,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"10000_square":["BenchmarkTools.Parameters",{"gctrial":true,"time_tolerance":0.05,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}]},"tags":[]}]},"tags":[]}]},"tags":[]}]]]
1+
[{"Julia":"1.12.0","BenchmarkTools":{"major":1,"minor":6,"patch":2,"prerelease":[],"build":[]}},[["BenchmarkGroup",{"data":{"schematic":["BenchmarkGroup",{"data":{"plan":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}]},"tags":[]}],"curves":["BenchmarkGroup",{"data":{"turns_render":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"bsplines_render":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"offset_bspline_approximation":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}]},"tags":[]}],"polygons":["BenchmarkGroup",{"data":{"rectangles":["BenchmarkGroup",{"data":{"render_units":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"render":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"render_units_gds":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"render_convertunits":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"render_gds":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}]},"tags":[]}],"circles":["BenchmarkGroup",{"data":{"direct":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"entity_delta":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"direct_units_gds":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"direct_units":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"entity_atol":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"direct_gds":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}]},"tags":[]}]},"tags":[]}],"flatten":["BenchmarkGroup",{"data":{"shallow_references":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"array_reference":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"nested_references":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}]},"tags":[]}],"clipping":["BenchmarkGroup",{"data":{"difference2d_offset":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"difference2d":["BenchmarkGroup",{"data":{"100_square":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"3600_square":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"961_square":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"19881_square":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"8000_skew":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"10000_square":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}]},"tags":[]}]},"tags":[]}],"bounds":["BenchmarkGroup",{"data":{"random_rectangles":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"shallow_references":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"random_circles":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}],"nested_references":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}]},"tags":[]}],"intersection":["BenchmarkGroup",{"data":{"straight_lines":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}]},"tags":[]}],"autofill":["Parameters",{"gctrial":true,"time_tolerance":0.05,"evals_set":false,"samples":10000,"evals":1,"gcsample":false,"seconds":5.0,"overhead":0.0,"memory_tolerance":0.01}]},"tags":[]}]]]

0 commit comments

Comments
 (0)