C# Boxingのパフォーマンス上の影響について

Boxingなしの場合のコード

using System;

class Program
{
    public static void Main()
    {
        DateTime start = DateTime.Now;
        for (Int32 i = 0; i < Int32.MaxValue; i++) 
        {
            Int32 i32 = i;//Boxingなし
        }

        TimeSpan span = DateTime.Now - start;
        Console.WriteLine("Time : {0}", span);
    }
}



Boxingありの場合のコード

using System;

class Program
{
    public static void Main()
    {
        DateTime start = DateTime.Now;
        for (Int32 i = 0; i < Int32.MaxValue; i++) 
        {
            Object o = i;//Boxing
        }

        TimeSpan span = DateTime.Now - start;
        Console.WriteLine("Time : {0}", span);
    }
}




テスト環境

  • CPU : Intel Core2 Quad 2.66[GHz]

  • Memory : 4[GB]

  • Boxingなし5.767秒
    Boxingあり17.645秒


    Boxingはかなりパフォーマンス上の影響が大きい。