はじめに
「LinqFaster」をプロジェクトに追加することで
高速な LINQ を使用できるようになります
インストール
Visual Studio メニューの「ツール>NuGet パッケージ マネージャー>
ソリューションの NuGet パッケージの管理」を選択します
「参照」タブを選択して、検索欄に「LinqFaster」と入力して
表示された「LinqFaster」を選択します
インストールしたいプロジェクトをチェックして「インストール」ボタンを押します
速度検証
using JM.LinqFaster; using System; using System.Diagnostics; using System.Linq; class Program { static void Main() { var list = Enumerable.Range( 0, 10000 ).ToArray(); var sw1 = new Stopwatch(); sw1.Start(); for ( int i = 0; i < 10000; i++ ) { list.Max(); list.Min(); list.Sum(); list.Average(); } sw1.Stop(); var sw2 = new Stopwatch(); sw2.Start(); for ( int i = 0; i < 10000; i++ ) { list.MaxF(); list.MinF(); list.SumF(); list.AverageF(); } sw2.Stop(); Console.WriteLine( sw1.Elapsed.TotalSeconds ); Console.WriteLine( sw2.Elapsed.TotalSeconds ); } }
種類 | 処理時間 |
---|---|
LINQ | 2.9 秒 |
LinqFaster | 0.4 秒 |
使用例
using JM.LinqFaster; class Program { static void Main() { // 配列を作成 var myArray = LinqFaster.RangeArrayF( -500, 1000 ); // リストを作成 var myList = LinqFaster.RepeatListF( 5.0f, 1000 ); // 合計値を計算 var sum = myArray.SumF(); var sum2 = myArray.SumF( x => x * x ); // 平均値を計算 var average = myArray.AverageF(); var average2 = myArray.AverageF( x => x * x ); // 最小値を取得 var min = myArray.MinF(); var min2 = myArray.MinF( x => x * x ); // 最大値を取得 var max = myArray.MaxF(); var max2 = myArray.MaxF( x => x * x ); // Where と Select の統合 var newArray = myArray.WhereSelectF( x => x % 2 == 0, x => x * x ); var newArray2 = myArray.SelectWhereF( x => x * x, x => x % 2 == 0 ); // Where と Aggregate の統合 var filteredSum = myArray.WhereAggregateF( x => x % 2 == 0, ( acc, x ) => acc + x ); } }