数据并行,任务并行还是无?

时间:2018-03-17 20:54:40

标签: c# asp.net-core parallel.foreach

我正在使用ASP.Net Core 1.x来托管Web API。我的一个API接收JSON数据作为输入。输入采用Newtonsoft JSON的JObject列表的形式。 API必须验证输入的JSON数据。 验证有两种 - 对JSON字段的值等任何约束进行验证的都在给定范围内(对于数字)或匹配正则表达式模式等。 第二种类型的验证检查给定的JSON字段值是否是数据库中退出时的有效值之一。

我当前的实现大致迭代每个JObject,然后是每个JProperty,然后通过优化进行验证,为第二类验证进行批量查询。

我正在寻找有关如何改进此顺序验证的建议。

由于第一种类型的验证完全是CPU限制操作,我期待使用Parallel.ForEach并行处理每个对象的验证。我将每个对象的验证视为独立操作。

但是我从给定的书Concurrency in C# Cookbook -

中读到了
  

...一般来说,服务器上的并行编程会起作用   内置并行性,不会带来任何实际好处。

这让我感到困惑。我不应该进行并行处理吗?对我有什么其他选择?

更新:(基于以下评论) JSON大小目前设置为2kb - 20Kb。在此API上运行了一组负载测试,其中20个用户同时访问API,从而降低了性能。然后API开始花费超过3秒来完成。截至今天,输入json大小最大为20 kb,但如果我们进一步进行算法改进,我想将最大JSON大小从20Kb增加。 然而,上述更新讨论了加载API的性能要求,与原始问题是分开的 - 数据并行性或任务并行性是否可以与ASP.Net Core Web API一起使用。

0 个答案:

没有答案
相关问题