public void Should_be_fast()
        {
            Fiber fiber = new ThreadPoolFiber();

            const int limit = 5000000;

            var complete = new Future<int>();

            Channel<MsgStruct> channel = new ConsumerChannel<MsgStruct>(fiber, message =>
                {
                    if (message.Count == limit)
                        complete.Complete(limit);
                });

            using (var timer = new FunctionTimer("Throughput", x =>
                {
                    Trace.WriteLine("Time to execute: " + (int) x.ElapsedMilliseconds + "ms");

                    Trace.WriteLine("Per second throughput: " + (int) (limit/(x.ElapsedMilliseconds/1000)));
                }))
            {
                for (int i = 1; i <= limit; i++)
                {
                    channel.Send(new MsgStruct
                        {
                            Count = i,
                            Other = i*8,
                        });
                }

                timer.Mark();

                complete.WaitUntilCompleted(30.Seconds()).ShouldBeTrue();
            }
        }
Esempio n. 2
0
        public void IndexAsync()
        {
            AsyncManager.OutstandingOperations.Increment(2);

            Channel <QueryContent> channel = new ConsumerChannel <QueryContent>(new ThreadPoolFiber(), QueryService);

            channel.Send(new QueryContent(37, message =>
            {
                AsyncManager.Parameters["first"] = message;
                AsyncManager.OutstandingOperations.Decrement();
            }));

            channel.Send(new QueryContent(27, message =>
            {
                AsyncManager.Parameters["second"] = message;
                AsyncManager.OutstandingOperations.Decrement();
            }));
        }
Esempio n. 3
0
        public void IndexAsync()
        {
            AsyncManager.OutstandingOperations.Increment(2);

            Channel<QueryContent> channel = new ConsumerChannel<QueryContent>(new ThreadPoolFiber(), QueryService);

            channel.Send(new QueryContent(37, message =>
                {
                    AsyncManager.Parameters["first"] = message;
                    AsyncManager.OutstandingOperations.Decrement();
                }));

            channel.Send(new QueryContent(27, message =>
                {
                    AsyncManager.Parameters["second"] = message;
                    AsyncManager.OutstandingOperations.Decrement();
                }));
        }