using System;using System.Collections.Generic;using System.Diagnostics;using System.IO;namespace BenchmarkCopyArray{ class Program { private const int TestTimes = 10000000; static void Main() { var testArrayCopy = new TestArrayCopy(); TestCopy(testArrayCopy.TestBinaryReader
, "Binary.ReadBytes"); TestCopy(testArrayCopy.TestConvertToList
, "ConvertToList"); TestCopy(testArrayCopy.TestArrayDotCopy
, "Array.Copy"); TestCopy(testArrayCopy.TestBlockCopy
, "Buffer.BlockCopy"); Console.Read(); } private static void TestCopy(Action testMethod
, string methodName) { var stopWatch = new Stopwatch(); stopWatch.Start(); for (int i = 0; i < TestTimes; i++) { testMethod(); } testMethod(); stopWatch.Stop(); Console.WriteLine("{0}: {1} seconds
, {2}."
, methodName
, stopWatch.Elapsed.Seconds
, stopWatch.Elapsed.Milliseconds); } } class TestArrayCopy { private readonly
byte[] _sourceBytes = new
byte[] { 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
, 10 }; public void TestBinaryReader() { var binaryReader = new BinaryReader(new MemoryStream(_sourceBytes)); binaryReader.ReadBytes(_sourceBytes.Length); } public void TestConvertToList() { IList<
byte> bytesSourceList = new List<
byte>(_sourceBytes); var bytesNew = new
byte[_sourceBytes.Length]; bytesSourceList.CopyTo(bytesNew
, 0); } public void TestArrayDotCopy() { var bytesNew = new
byte[_sourceBytes.Length]; Array.Copy(_sourceBytes
, 0
, bytesNew
, 0
, _sourceBytes.Length); } public void TestBlockCopy() { var bytesNew = new
byte[_sourceBytes.Length]; Buffer.BlockCopy(_sourceBytes
, 0
, bytesNew
, 0
, _sourceBytes.Length); } }}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。