From 3d8db458cdaf2cb9e48a4bb2e36817c2a6d253a1 Mon Sep 17 00:00:00 2001 From: matsutaka Date: Wed, 12 Mar 2025 15:49:05 +0900 Subject: [PATCH] =?UTF-8?q?chore:=20ArraySegment.ToArray()=E3=81=AE?= =?UTF-8?q?=E5=91=BC=E3=81=B3=E5=87=BA=E3=81=97=E3=81=AB=E3=82=88=E3=82=8B?= =?UTF-8?q?GC=20Alloc=E3=82=92=E8=BB=BD=E6=B8=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ArraySegment.AsSpan() によって Span を取得し、 NativeArray.AsSpan() で得たコピー先 Span に向けて Span.CopyTo() によるコピーを行う。 data.Array[] による ArraySegment.ToArray() の呼び出しが無くなった結果、 GC Alloc が減少する。 --- Assets/UniGLTF/Runtime/UniGLTF/IO/NativeArrayManager.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/NativeArrayManager.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/NativeArrayManager.cs index b02250bbb..3fdce7985 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/NativeArrayManager.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/NativeArrayManager.cs @@ -69,8 +69,9 @@ namespace UniGLTF public NativeArray CreateNativeArray(ArraySegment data) where T : struct { var array = CreateNativeArray(data.Count); - for (int i = 0; i < data.Count; i++) - array[i] = data.Array[data.Offset + i]; + var toSpan = array.AsSpan(); + var fromSpan = data.AsSpan(); + fromSpan.CopyTo(toSpan); return array; }