Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Dotnet的可扩展性挑战_C#_.net - Fatal编程技术网

C# Dotnet的可扩展性挑战

C# Dotnet的可扩展性挑战,c#,.net,C#,.net,我正在创建一个模块(一个基于Dotnet的exe),使用它我可以在尽可能短的时间内从NoSql数据库(MongoDB)中搅动一个巨大的数据(1亿条记录),逻辑包括昂贵的操作,如加密、解密,这是关键数据,因此我们需要对同样的数据非常小心 目前,基本逻辑已经就绪,但目前运行速度非常慢(即使用一个主线程50条记录/5分钟)。现在,对于多线程it,我想使用任务并行库,其中可能有两种方法: 使用Parallel.For:这是一种更简单的方法,其中代码将作为不同的线程工作 对批处理使用不同的任务:这种方法有

我正在创建一个模块(一个基于Dotnet的exe),使用它我可以在尽可能短的时间内从NoSql数据库(MongoDB)中搅动一个巨大的数据(1亿条记录),逻辑包括昂贵的操作,如加密、解密,这是关键数据,因此我们需要对同样的数据非常小心

目前,基本逻辑已经就绪,但目前运行速度非常慢(即使用一个主线程50条记录/5分钟)。现在,对于多线程it,我想使用任务并行库,其中可能有两种方法:

  • 使用Parallel.For:这是一种更简单的方法,其中代码将作为不同的线程工作
  • 对批处理使用不同的任务:这种方法有不同的任务,任务具有上下限,使用上下限来分隔执行,因此不会造成麻烦。虽然在这种方法中,我们仍然需要弄清楚如何正确地管理一些任务失败 但主要是在这里,执行时间是一个紧迫的问题。这里哪种方法可以给我更好的吞吐量?或者是否可以使用其他方法


    虽然我正在为这两个项目建立POC,但任何指导都会有所帮助

    只有一个答案是:基准测试。它将向您展示您的环境和代码将如何扩展。您需要在更高的级别上更改您的方法。考虑一下你的表现增加了100倍,这是不太可能的。然后,通过做数学,你每天可以得到144000条记录,这很慢,我怀疑这对你来说也是一个合适的时间框架。或者更改处理数据库数据的算法。只有基准测试才能确定,但快速搜索表明并行可以更快。例如,或者。抱歉,我们无法真正为您提供答案,因为优化通常取决于所解决问题的具体情况。你没有提供足够的信息让我们了解这些细节。“附言:我的最后期限很紧。”你做错了。真的错了。从一开始就应该知道性能要求。如果您现在正试图找出问题的解决方案,这也很快,那么您将不得不重新实现您的解决方案。