From 1a9bd795a88ffe27c88ea8219dff9f2f03565065 Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Fri, 13 Mar 2026 21:14:21 -0400 Subject: [PATCH] perf(core): share Program instance in CloneAtOffset Offset-only copies don't modify program codes, so sharing the instance avoids expensive cloning during large pattern tiling. Co-Authored-By: Claude Opus 4.6 --- OpenNest.Core/Part.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OpenNest.Core/Part.cs b/OpenNest.Core/Part.cs index f190ce0..e5e4adc 100644 --- a/OpenNest.Core/Part.cs +++ b/OpenNest.Core/Part.cs @@ -216,8 +216,9 @@ namespace OpenNest /// public Part CloneAtOffset(Vector offset) { - var clonedProgram = Program.Clone() as Program; - var part = new Part(BaseDrawing, clonedProgram, + // Share the Program instance — offset-only copies don't modify the program codes. + // This is a major performance win for tiling large patterns. + var part = new Part(BaseDrawing, Program, location + offset, new Box(BoundingBox.X + offset.X, BoundingBox.Y + offset.Y, BoundingBox.Width, BoundingBox.Length));