从Azure表中获取具有不同条件条件的记录需要执行10次。我使用Parallel.Foreach
方法并行执行ExecuteQuerySegmentedAsync
。但无论有没有Parallel.Foreach
,代码执行时间都是相同的。
List<T> result = new List<T>();
var stopWatch = Stopwatch.StartNew();
Parallel.ForEach(List, (item) => // source collection
{
var temp = filter(pos, item.no, table, from, till);
if (temp != null) { result.AddRange(temp); }
});
stopWatch.Stop();
Console.WriteLine("thread", stopWatch.ElapsedMilliseconds);
public List<T> filterByTail(List<string> engPos, string tail, CloudTable table, string filterFromDate, string filterTillDate)
{
try
{ do
{
var queryResult = table.ExecuteQuerySegmentedAsync(rangeQuery, token, null, null).Result;
dataset.AddRange(queryResult.Results);
token = queryResult.ContinuationToken;
}
while (token != null);
return dataset;
}}
如何使用并行处理提高从Azure获取数据的性能?
答案 0 :(得分:0)
我建议您查看此外部博客:https://martincarlsen.com/boost-your-azure-table-storage-performance/ 作者讨论了使用并行性提高性能,您已经提到过。他使用批处理和ExecuteBatchAsync的组合来实现更好的性能处理。