如何减少执行时间?

时间:2014-02-14 11:00:10

标签: c# linq list c#-4.0 tfs

代码:

testItemList = testResults.Select(item => project.Store.GetWorkItem(item.TargetId)).ToList();

testItemList是(局部变量)List testItemList

testResults是(局部变量)WorkItemLinkInfo [] testResults

共有610个工作项目。如何减少执行时间?截至目前,执行此行代码需要20秒。 如何微调上面的代码,以减少执行时间?

2 个答案:

答案 0 :(得分:3)

Query query = new Query(project.Store, "Select [Title] From WorkItems", testResults.Select(item => item.TargetId).ToArray());
var car = query.BeginQuery();
//Do something else while awaiting server response...
testItemList = query.EndQuery(car);

您的代码总共610次到服务器,并下载每个工作项的每个字段。此代码只进行一次往返,并仅下载标题字段。

请注意,您仍然可以访问testitemlist中每个工作项的每个字段,但是对原始查询字符串中未包含的字段的每次访问都需要进行另一次往返。

http://msdn.microsoft.com/en-us/library/bb130306.aspx

答案 1 :(得分:1)

我会猜测:Store是一个WorkItemStore?
什么是testResults?

你的linq语句将导致for循环。为每个ID创建一个新查询。您可以通过使用批量查询来加快结果 也许WorkItemStore.Query(id [],wiql)可以加快速度。提供ID列表。
然后你会得到一个WorkItemCollection。 “wiql”是用于指定所需字段的查询语言 对不起,简短的回答。我手边没有TFS试一试并发布经过测试的代码片段。