(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.2467while loop:0.2666foreach loop:0.4867lamda loop:0.8728