【发布时间】:2016-06-21 15:55:56
【问题描述】:
由于某些原因,我必须使用 tfs java sdk,所以我总是需要 workitem.open() 从 workitemclient.Query() 加载每个工作项的修订,如下代码:
WorkItemCollection workItemCollection = workItemClient.query(wiql);
for(int i = 0; i < workItemCollection.size(); i++)
{
WorkItem workItem = workItems.get(i);
workItem.open();
workItem.getRevisions()
.forEach(r -> {
//..."System.History").getValue());
//..."System.History").getOriginalValue());
});
}
如果不使用 open(),Revisions 必须为空; 每个工作项的 open() 方法花费 55 毫秒,这是不可接受的。
所以有什么提高效率的建议吗?非常感谢。
/////////////////////////////////////// //////////////////////做了////////////////////////// ///////////////////////////////////
我这样做可以缩短时间。 像打击一样使用 SQL:
String sql = "select [System.Id],[System.ChangedBy],[System.ChangedDate],[words]"
+ " from Tfs_DefaultCollection.dbo.WorkItemsEverable"
+ " left join Tfs_DefaultCollection.dbo.WorkItemLongTexts on [System.Id] = [ID] and [System.Rev] = [Rev]"
+ " where FldID=54" // behalf History field
+ " and"+conditionSql;
conditionSql : "id in ('12','1324','1')"
现在使用这种方法,检索历史记录(changedby,changedDate,History)的平均成本仅为 2~4 个 Mills(测试用例为 30~1000 个工作项)
/////////////////////////////////////// //////////////////////仍然/////////////////////////// /////////////////////////////////////////////p>
任何关于更好的代码/效率的建议将不胜感激。
【问题讨论】: