忍者ブログ
  C#   マクロ   Notepad++
06
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

foreachで書いたのとLINQで書いたのとどっちが速いか気になった。

検証してみた。
LINQの便利さとか優れてる点とかまるでおかまいなしで検証してみた。



- 検証コード
using System;
using System.Diagnostics;
using System.Linq;

class Class1 {
	static void Main() {
		int[] range = Enumerable.Range(1, 1000).ToArray();

		Console.WriteLine("■クエリー構文");
		Instrumentation(() => { QuerySyntax(range); });
		Console.WriteLine("■メソッド構文");
		Instrumentation(() => { MethodSyntax(range); });
		Console.WriteLine("■foreachメソッド");
		Instrumentation(() => { ForEach(range); });
		Console.WriteLine("■foreach匿名メソッド");
		Instrumentation(() => { foreach (int num in range) if (num < 2) Console.WriteLine(num); } );
	}

	static void Instrumentation(Action action) {
		Stopwatch stopwatch = new Stopwatch();

		stopwatch.Start();
		action();
		stopwatch.Stop();

		Console.WriteLine(stopwatch.Elapsed);
	}
	
	static void QuerySyntax(params int[] numbers) {
		foreach (int item in (from n in numbers where n < 2 select n)) {
			Console.WriteLine(item);
		}
	}
	
	static void MethodSyntax(params int[] numbers) {
		foreach (int item in numbers.Where(n => n < 2)) {
			Console.WriteLine(item);
		}
	}
	
	static void ForEach(params int[] numbers) {
		foreach (int item in numbers) {
			if (item < 2) {
				Console.WriteLine(item);
			}
		}
	}
}

- 出力結果
■クエリー構文
1
00:00:00.0135229
■メソッド構文
1
00:00:00.0013215
■foreachメソッド
1
00:00:00.0006723
■foreach匿名メソッド
1
00:00:00.0005224

複雑なデータを探すとかでないかぎりは
メソッド構文が良さそうな感じな結果でした
極端な速さを求める処理とかでないかぎり使いやすい及び見やすいのが
良さそうでございます
PR
この記事にコメントする
名前
URL
本文
パス   
PREV  HOME  NEXT
忍者ブログ  [PR]

(design by 山瀬)