Ejemplo n.º 1
0
        public void BenchmarkBulkWrite()
        {
            //string value = null;
            //int x = 0;
            const int cnt  = 10000;
            const int loop = 10000;

            byte[] items     = new byte[cnt];
            byte[] itemsRead = new byte[cnt];

            var queue = new IsolatedQueue <byte>();

            Stopwatch swDequeue = new Stopwatch();
            Stopwatch swEnqueue = new Stopwatch();

            for (int repeat = 0; repeat < loop; repeat++)
            {
                swEnqueue.Start();
                queue.Enqueue(items, 0, items.Length);
                swEnqueue.Stop();

                swDequeue.Start();
                while (queue.Dequeue(itemsRead, 0, items.Length) > 0)
                {
                    ;
                }
                swDequeue.Stop();
            }


            swEnqueue.Reset();
            swDequeue.Reset();

            for (int repeat = 0; repeat < loop; repeat++)
            {
                swEnqueue.Start();
                queue.Enqueue(items, 0, items.Length);
                swEnqueue.Stop();

                swDequeue.Start();
                while (queue.Dequeue(itemsRead, 0, items.Length) > 0)
                {
                    ;
                }
                swDequeue.Stop();
            }


            System.Console.WriteLine("Enqueue " + (cnt * loop / swEnqueue.Elapsed.TotalSeconds / 1000000));
            System.Console.WriteLine("Dequeue " + (cnt * loop / swDequeue.Elapsed.TotalSeconds / 1000000));
            System.Console.WriteLine(swDequeue.Elapsed.TotalSeconds);
        }
            public override int Read(byte[] buffer, int offset, int count)
            {
                int bytesRead = 0;

                while (bytesRead < count)
                {
                    bytesRead += m_receiveQueue.Dequeue(buffer, offset + bytesRead, count - bytesRead);
                }
                return(bytesRead);
            }
Ejemplo n.º 3
0
        private void RunTwoBulkDequeue(object state)
        {
            m_wait.Set();
            //SpinWait wait = new SpinWait();
            //Thread.Sleep(1000);
            Stopwatch sw = new Stopwatch();

            sw.Start();

            const int ArrayCount = 140;

            int[] array = new int[ArrayCount];

            int count        = 0;
            int countRepeats = 0;

            while (count < cnt)
            {
                int totalCount = 0;
ReReadNow:

                int itemCount = m_collection.Dequeue(array, 0, ArrayCount);
                totalCount   += itemCount;
                if (itemCount > 0)
                {
                    for (int x = 0; x < itemCount; x++)
                    {
                        Assert.AreEqual(array[x], count);
                        count++;
                    }
                    if (itemCount == ArrayCount)
                    {
                        goto ReReadNow;
                    }
                }

                System.Console.WriteLine("Dequeued: " + totalCount);

                countRepeats++;
                Thread.Sleep(1);
            }
            sw.Stop();
            System.Console.WriteLine(sw.Elapsed.TotalSeconds);
            System.Console.WriteLine(countRepeats);
            m_wait.Set();
            Assert.AreEqual(count, cnt);
        }
Ejemplo n.º 4
0
        public void BenchmarkBulkWrite()
        {

            //string value = null;
            //int x = 0;
            const int cnt = 10000;
            const int loop = 10000;

            byte[] items = new byte[cnt];
            byte[] itemsRead = new byte[cnt];

            var queue = new IsolatedQueue<byte>();

            Stopwatch swDequeue = new Stopwatch();
            Stopwatch swEnqueue = new Stopwatch();

            for (int repeat = 0; repeat < loop; repeat++)
            {
                swEnqueue.Start();
                queue.Enqueue(items, 0, items.Length);
                swEnqueue.Stop();

                swDequeue.Start();
                while (queue.Dequeue(itemsRead, 0, items.Length) > 0)
                    ;
                swDequeue.Stop();
            }


            swEnqueue.Reset();
            swDequeue.Reset();

            for (int repeat = 0; repeat < loop; repeat++)
            {
                swEnqueue.Start();
                queue.Enqueue(items, 0, items.Length);
                swEnqueue.Stop();

                swDequeue.Start();
                while (queue.Dequeue(itemsRead, 0, items.Length) > 0)
                    ;
                swDequeue.Stop();
            }


            System.Console.WriteLine("Enqueue " + (cnt * loop / swEnqueue.Elapsed.TotalSeconds / 1000000));
            System.Console.WriteLine("Dequeue " + (cnt * loop / swDequeue.Elapsed.TotalSeconds / 1000000));
            System.Console.WriteLine(swDequeue.Elapsed.TotalSeconds);
        }