chore: ArraySegment.ToArray()の呼び出しによるGC Allocを軽減

ArraySegment.AsSpan() によって Span を取得し、
NativeArray.AsSpan() で得たコピー先 Span に向けて
Span.CopyTo() によるコピーを行う。

data.Array[] による ArraySegment.ToArray() の呼び出しが無くなった結果、
GC Alloc が減少する。
This commit is contained in:
matsutaka 2025-03-12 15:49:05 +09:00
parent 71b6b2a41b
commit 3d8db458cd

View File

@ -69,8 +69,9 @@ namespace UniGLTF
public NativeArray<T> CreateNativeArray<T>(ArraySegment<T> data) where T : struct
{
var array = CreateNativeArray<T>(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;
}