Language/C#

[C#] 배열 복사

마탁이 2020. 12. 23. 20:22

- 배열의 복사는 Array 클래스의 정적 메소드인 Copy를 이용하거나

- Buffer.BlockCopy 를 이용할 수 있다. 

- 아래 코드에서는 Buffer.BlockCopy가 좀 더 좋은 성능을 보여준다.

using System;
using System.Diagnostics;

namespace SqlerCSharp.Ch08_02
{
    class Program
    {
        static void Main(string[] args)
        {
            // BlockCopy
            Stopwatch sw1 = Stopwatch.StartNew();
            for(int i = 0; i < 10000000; i++)
            {
                int[] source = new int[100];
                int[] target = new int[100];

                Buffer.BlockCopy(source, 0, target, 0, 100);
            }
            sw1.Stop();

            // ArrayCopy
            Stopwatch sw2 = Stopwatch.StartNew();
            for(int i = 0; i < 10000000; i++)
            {
                int[] source = new int[100];
                int[] target = new int[100];

                Array.Copy(source, 0, target, 0, 100);
            }
            sw2.Stop();

            Console.WriteLine("Buffer.BlockCopy : {0} ms", sw1.ElapsedMilliseconds);
            Console.WriteLine("Array.Copy : {0} ms", sw2.ElapsedMilliseconds);
        }
    }
}

 

<Array.Copy vs Buffer.BlockCopy>

'Language > C#' 카테고리의 다른 글

[C#] 문자열 다루기 - string, 문자열 포맷  (0) 2020.12.23
[C#] 배열 정렬  (0) 2020.12.23
[C#] Jagged 배열  (0) 2020.12.23
[C#] try ~ catch ~ finally, throw  (0) 2020.12.23
[C#] 박싱(Boxing)과 언박싱(Unboxing)  (0) 2020.12.23