Exemplo n.º 1
0
        public void FIFO_OneEnteredOneRemoved()
        {
            var values       = Enumerable.Range(1, 10_000_000).ToArray();
            var queueOnStack = new TestableQueue <int>(testPlain: false);

            var customStopWatch = Stopwatch.StartNew();
            var dequeued        = OneInsertedOneRemoved(values, queueOnStack);

            customStopWatch.Stop();

            dequeued.Should().Equal(values);


            var queue             = new TestableQueue <int>(testPlain: true);
            var plainStopWatch    = Stopwatch.StartNew();
            var dequeuedFromPlain = OneInsertedOneRemoved(values, queue);

            plainStopWatch.Stop();


            _outputHelper.WriteLine($"plain queue done in {plainStopWatch.ElapsedMilliseconds} ms, custom {customStopWatch.ElapsedMilliseconds} ms; number of elements {values.Length}");

            //customStopWatch.ElapsedMilliseconds.Should()
            //    .BeLessOrEqualTo(plainStopWatch.ElapsedMilliseconds * 3);
        }
Exemplo n.º 2
0
        private List <int> OneInsertedOneRemoved(int[] values, TestableQueue <int> queue)
        {
            var dequeued = new List <int>(values.Length);

            foreach (var value in values)
            {
                queue.Enqueue(value);
                dequeued.Add(queue.Dequeue());
            }

            return(dequeued);
        }
Exemplo n.º 3
0
        private static List <int> AllInsertThanAllRemove(int[] values, TestableQueue <int> queue)
        {
            foreach (var value in values)
            {
                queue.Enqueue(value);
            }

            var dequeued = new List <int>(values.Length);

            while (queue.Count > 0)
            {
                dequeued.Add(queue.Dequeue());
            }

            return(dequeued);
        }