こんにちは、Unityエンジニアのオオバです。 C#を使う上でLINQは非常に便利な機能なのは言うまでもありません。 しかし、実際のプロダクトへ組み込む際の負荷は知っておくべきということで、改めて調べてみたという記事です。 今回の検証対象は使用頻度が高いフィルタ系関数です。 FirstOrDefaultAnyWhere検証するポイントはUnityProfiler項目で言うと、Time ms(実行時間)とGC Allocです。 実行時間は言葉の通りで、高ければ高いほどFPSが低下します。 GC Allocは1フレームにヒープメモリの確保メモリ容量で、数値が高いとGC発生回数が増えてしまい、プロダクトのパフォーマンスを下げる場合があります。 今回の検証では数値を可視化しやすいように配列要素数を10000個、1フレーム内の実行回数を100回とします。 検証方法は以前ブログで紹介したやり方です。
![LINQとfor文の負荷検証 - 渋谷ほととぎす通信](https://cdn-ak-scissors.b.st-hatena.com/image/square/ef94de6d4d73ccd8e2757e1f601b14a04be966d3/height=288;version=1;width=512/https%3A%2F%2Fi.gyazo.com%2F87b096ac54d119b606a489c4ccd80aaf.jpg)