Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions bench/Earcut.Benchmarks/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ public static void Main(string[] args)
m.TriangulateSquare();
m.TriangulateWater();
m.TriangulateWaterHuge();
m.TriangulateWaterHuge3();
m.RefineWaterHuge3();
m.TriangulateDude();
m.TriangulateComplexPolygon();

Expand Down
29 changes: 28 additions & 1 deletion bench/Earcut.Benchmarks/TriangulationBenchmarks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ public class TriangulationBenchmarks
private int[] _waterHoles = null!;
private double[] _waterHugeVertices = null!;
private int[] _waterHugeHoles = null!;
private double[] _waterHuge3Vertices = null!;
private int[] _waterHuge3Holes = null!;
private int[] _waterHuge3Triangles = null!;

[GlobalSetup]
public void Setup()
Expand All @@ -44,6 +47,10 @@ public void Setup()

// Load water-huge fixture
LoadFixture("water-huge", out _waterHugeVertices, out _waterHugeHoles);

// Load water-huge3 fixture
LoadFixture("water-huge3", out _waterHuge3Vertices, out _waterHuge3Holes);
_waterHuge3Triangles = Earcut.Triangulate(_waterHuge3Vertices, _waterHuge3Holes);
}

private static void LoadFixture(string name, out double[] vertices, out int[] holes)
Expand Down Expand Up @@ -73,7 +80,7 @@ public IReadOnlyList<int> TriangulateSquare()
[Benchmark]
public IReadOnlyList<int> TriangulateComplexPolygon()
{
var r = Earcut.Triangulate(_complexPolygon);
var r = Earcut.Triangulate(_complexPolygon);
if (r.Length == 0)
{
throw new Exception();
Expand Down Expand Up @@ -117,4 +124,24 @@ public IReadOnlyList<int> TriangulateWaterHuge()

return r;
}

[Benchmark]
public IReadOnlyList<int> TriangulateWaterHuge3()
{
var r = Earcut.Triangulate(_waterHuge3Vertices, _waterHuge3Holes);
if (r.Length == 0)
{
throw new Exception();
}

return r;
}

[Benchmark]
public void RefineWaterHuge3()
{
// Copy the pre-computed triangles so each run starts from the same state.
var triangles = (int[])_waterHuge3Triangles.Clone();
Earcut.Refine(triangles, _waterHuge3Vertices);
}
}
Loading
Loading