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(); } }
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(); })); }
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(); })); }