Ejemplo n.º 1
0
        public void Setup()
        {
            var array = Enumerable.Range(0, 1000).ToArray();

            _data = new ListLike <int> {
                Array = array, Length = 500
            };
        }
Ejemplo n.º 2
0
        static EnumerationTest()
        {
            var array = Enumerable.Range(0, 1000).ToArray();

            _data = new ListLike <int> {
                Array = array, Length = 500
            };

            _expected = array.Take(500).Sum();
        }
Ejemplo n.º 3
0
        public static int SumArray(ListLike <int> list)
        {
            var sum = 0;

            var(array, length) = (list.Array, list.Length);
            for (int i = 0; i < length; i++)
            {
                sum += array[i];
            }
            return(sum);
        }
Ejemplo n.º 4
0
        public static int SumSpan(ListLike <int> list)
        {
            // Fast Span (.NET Core 2.1 以降限定)だけど、foreach で普通に生列挙と同じスピードが出るのが Span のいいところ。
            var sum = 0;

            foreach (var x in list.GetSpan())
            {
                sum += x;
            }
            return(sum);
        }
Ejemplo n.º 5
0
        public static int SumEnumerable(ListLike <int> list)
        {
            var sum = 0;
            // foreach (var x in list) で行けるんだけど、比較のために生利用
            var e = list.GetEnumerator();

            while (e.MoveNext())
            {
                sum += e.Current;
            }
            return(sum);
        }
Ejemplo n.º 6
0
        public static int SumFastEnumerable(ListLike <int> list)
        {
            var sum = 0;
            var e   = list.GetFastEnumerator();
            var x   = e.TryMoveNext(out var success);

            while (success)
            {
                sum += x;
                x    = e.TryMoveNext(out success);
            }
            return(sum);
        }