我不知道下面的代码是否可以进行优化,以更快地执行。 我目前似乎最大程度的发挥以每秒大约140万简单的信息在一个非常简单的数据流结构。 我知道,这个样本处理传递/转换的消息同步,不过,我目前测试TPL数据流基于任务和并发集合为自己的定制解决方案的可能替代。 我知道的术语“并发”已经建议我运行的东西并行,但当前测试目的,我通过同步推在我自己的解决方案的消息,我也得到每秒约5.1万条信息。 缺少什么我在这里,我读TPL数据流被推为高吞吐量,低延迟解决方案,但到目前为止,我必须俯瞰性能调整。 任何人谁可以点我到正确的方向吗?
class TPLDataFlowExperiments
{
public TPLDataFlowExperiments()
{
var buf1 = new BufferBlock<int>();
var transform = new TransformBlock<int, string>(t =>
{
return "";
});
var action = new ActionBlock<string>(s =>
{
//Thread.Sleep(100);
//Console.WriteLine(s);
});
buf1.LinkTo(transform);
transform.LinkTo(action);
//Propagate all Completions down the flow
buf1.Completion.ContinueWith(t =>
{
transform.Complete();
transform.Completion.ContinueWith(u =>
{
action.Complete();
});
});
Stopwatch watch = new Stopwatch();
watch.Start();
int cap = 10000000;
for (int i = 0; i < cap; i++)
{
buf1.Post(i);
}
//Mark Buffer as Complete
buf1.Complete();
action.Completion.ContinueWith(t =>
{
watch.Stop();
Console.WriteLine("All Blocks finished processing");
Console.WriteLine("Units processed per second: " + cap / watch.ElapsedMilliseconds * 1000);
});
Console.ReadLine();
}
}