1. 程式人生 > >C#數組復制性能測試

C#數組復制性能測試

runt 數組復制 ons lap ise nbsp ges sed services

 1 using System;
 2 using System.Collections;
 3 using System.Collections.Generic;
 4 using System.Data;
 5 using System.Diagnostics;
 6 using System.IO;
 7 using System.Linq;
 8 using System.Runtime.InteropServices;
 9 using System.Threading;
10 using EmisData;
11 using Newtonsoft.Json;
12 13 namespace CLibrary.ConsoleApp 14 { 15 class Program 16 { 17 static void Main(string[] args) 18 { 19 int len = 50000000; 20 int[] newArray = new int[len]; 21 Stopwatch sw = new Stopwatch(); 22 int[] allArray = new int[len];
23 for (int i = 0; i < len; i++) 24 { 25 allArray[i] = i; 26 } 27 28 sw.Start(); 29 Thread.Sleep(1000); 30 Array.Copy(allArray, newArray, len); 31 sw.Stop(); 32 Console.WriteLine("
Array.Copy 執行時間(毫秒)"+ sw.ElapsedMilliseconds); 33 34 Array.Clear(newArray, 0, len); 35 sw.Restart(); 36 Thread.Sleep(1000); 37 newArray = (int[])allArray.Clone(); 38 sw.Stop(); 39 Console.WriteLine("Array.Clone 執行時間(毫秒)" + sw.ElapsedMilliseconds); 40 41 Array.Clear(newArray, 0, len); 42 sw.Restart(); 43 Thread.Sleep(1000); 44 Buffer.BlockCopy(allArray, 0, newArray, 0, len); 45 sw.Stop(); 46 Console.WriteLine("Buffer.BlockCopy 執行時間(毫秒)" + sw.ElapsedMilliseconds); 47 48 Console.ReadKey(); 49 } 50 51 52 53 } 54 55 }

測試結果:

技術分享

可見:Buffer.BlockCopy 表現最佳

C#數組復制性能測試