あなたに50技を教えてASPを昇格させます.NETパフォーマンス(20):あなたのサイクルを認識

5040 ワード

(31)Know your loops
技31:
君を知るサイクル
for is the fastest way of iterating over a collection, foreach is a little slower, and LINQ queries are slowest.forはコレクションを巡る最も速い方法であり,foreachはやや遅く,LINQクエリは最も遅い.
テストコード:
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using System.Diagnostics;



namespace ConsoleApplicationExample

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("code test:");



            Stopwatch watch = new Stopwatch();

            // for loop

            watch.Start();

            for (int i = 0; i < 100000; i++) { ; }

            watch.Stop();

            Console.WriteLine("for loop:");

            Console.WriteLine(watch.Elapsed.TotalMilliseconds);



            watch = new Stopwatch();

            // while loop

            watch.Start();

            int loop = 0;

            while (loop < 100000) { loop++; }

            watch.Stop();

            Console.WriteLine("while loop:");

            Console.WriteLine(watch.Elapsed.TotalMilliseconds);



            watch = new Stopwatch();

            // foreach loop

            watch.Start();

            int[] array = new int[100000];

            foreach (int i in array) { ; }

            watch.Stop();

            Console.WriteLine("foreach loop:");

            Console.WriteLine(watch.Elapsed.TotalMilliseconds);



            watch = new Stopwatch();

            // foreach loop

            watch.Start();

            Array.ForEach(array, (i) => { ; });

            watch.Stop();

            Console.WriteLine("lamda loop:");

            Console.WriteLine(watch.Elapsed.TotalMilliseconds);



            Console.ReadLine();

        }

    }

}

 
テスト結果:
code test:

for loop:

0.2467

while loop:

0.2666

foreach loop:

0.4867

lamda loop:

0.8728