一般的には List<T>
を使用して要素を追加して行き、最後に ToArray()
することで配列を作成します。
この方法では、最後の配列以外に作業用のヒープメモリ確保が発生してしまいます。
プールと構造体を使用することで、最後の完成した配列に対して1回のみメモリ確保する実装例です。
タグ : パフォーマンス
[C#] ArrayPool を使用して ToArray のアロケーションを1回にする方法
C#
C#
パフォーマンス
2024-08-08 (木)
[C#] Task.Run() のラムダ式でクロージャを回避して、ヒープメモリを軽減する
C#
C#
パフォーマンス
BenchmarkDotNet
2023-11-24 (金)
Task.Run()
とラムダ式を使用すると、簡単にタスクを実行できます。しかし、ラムダ式で外部変数をキャプチャすると、クロージャによりメモリアロケーションが発生します。
外部変数を引数に取る静的メソッドを用意することで、ラムダ式のメモリアロケーションを削減できます。Task.Run()
では実現できないため、Task.Factory.StartNew()
を使用して実現する方法です。