コード例 #1
0
ファイル: Program.cs プロジェクト: ufcpp/connect-japan-2018
        static void Main()
        {
            const int N = 10000;

            {
                var q     = new Quartet(1, 2, 3, 4);
                var begin = GC.GetTotalMemory(false);

                var sum = 0;
                for (int i = 0; i < N; i++)
                {
                    foreach (var x in q)
                    {
                        sum += x;
                    }
                }

                var end = GC.GetTotalMemory(false);
                Console.WriteLine($"struct: {end - begin}"); // 0 って出るはず
            }

            {
                var q     = new Quartet(1, 2, 3, 4);
                var begin = GC.GetTotalMemory(false);

                var sum = 0;
                for (int i = 0; i < N; i++)
                {
                    sum += Sum(q); // ジェネリックを介せばボックス化は起きない
                }
                var end = GC.GetTotalMemory(false);
                Console.WriteLine($"generics: {end - begin}"); // GetEnumerator のボックス化のみ
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: ufcpp/connect-japan-2018
 public Enumerator(Quartet quintet)
 {
     _items = quintet; _i = 0;
 }