コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】高速な LINQ を使用できる「FastLinq」紹介

はじめに

「FastLinq」をプロジェクトに追加することで
高速な LINQ を使用できるようになります

インストール

f:id:baba_s:20190826132012p:plain

Visual Studio メニューの「ツール>NuGet パッケージ マネージャー>
ソリューションの NuGet パッケージの管理」を選択します

f:id:baba_s:20190907115034p:plain

「参照」タブを選択して、検索欄に「FastLinq」と入力して
表示された「FastLinq」を選択します

f:id:baba_s:20190907115040p:plain

インストールしたいプロジェクトをチェックして「インストール」ボタンを押します

使い方

プロジェクトにインストールするだけで使用できます

速度検証

using System;
using System.Diagnostics;
using System.Linq;

class Program
{
    static void Main()
    {
        var count = 100000;
        var list  = Enumerable.Range( 0, 100000 ).ToArray();

        var sw = new Stopwatch();
        sw.Start();

        for ( int i = 0; i < count; i++ )
        {
            list.Any( c => c == 0 );
        }

        sw.Stop();

        Console.WriteLine( sw.Elapsed.TotalSeconds );
    }
}

上記のようなコードで 100,000 個の要素に対して
各 LINQ の関数を 100,000 回呼び出したときにかかった時間(秒)を計測しました

関数 通常 FastLinq
All 0.0082 秒 0.0031 秒
Any 0.0069 秒 0.0024 秒
Count 115.3352 秒 79.9263 秒
DefaultIfEmpty 0.0050 秒 0.0011 秒
ElementAt 0.0072 秒 0.0013 秒
ElementAtOrDefault 0.0073 秒 0.0016 秒
Skip 0.0055 秒 0.0021 秒
Take 0.0058 秒 0.0020 秒
ToArray 26.5843 秒 25.4278 秒
ToDictionary 853.9057 秒 467.7154 秒
ToList 26.2227 秒 25.6572 秒

関連記事