相关疑难解决方法(0)

TPL数据流加速?

我想知道以下代码是否可以优化以更快地执行.在一个非常简单的数据流结构中,我目前似乎每秒大约有140万条简单消息.我知道这个示例进程同步传递/转换消息,但是,我目前正在测试TPL Dataflow作为我自己的基于任务和并发集合的自定义解决方案的替代.我知道术语"并发"已经建议我并行运行,但是出于当前的测试目的,我通过同步推送消息在我自己的解决方案上,每秒钟我得到大约510万条消息.我在这里缺少什么,我读过TPL Dataflow被推为高吞吐量,低延迟的解决方案,但到目前为止我必须忽略性能调整.有谁能指出我正确的方向吗?

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(); …
Run Code Online (Sandbox Code Playgroud)

c# concurrency task-parallel-library tpl-dataflow

4
推荐指数
1
解决办法
4727
查看次数