Why GenCheckinNotesUpdateWorkitem task is expensive !!!

 

Performance data for GenCheckinNotesUpdateWortItem task (all times in ms)

1. For MSTV project (~ 17 MB)

a. Failed 1st build -

Time in Task – 110848

QueryLabel – 990

AnalyzeChangeset – 105870

QueryHistory – 105800

UpdateWorkItem – 3737

Get_WorkItem - 3737

b. Successful 1st build -

Time in Task – 121108

QueryLabel – 1053

AnalyzeChangeset – 117615

QueryHistory – 117458.51

UpdateWorkItem – 2184

Get_WorkItem - 2184

c. Successful 2nd build (17 edits, 4 deletes, 3 adds) -

Time in Task – 14250

QueryLabel – 2005

AnalyzeChangeset – 3177

QueryHistory – 3127.65

UpdateWorkItem – 7513

Get_WorkItem - 7512

Learning

· AnalyzeChangesets() function is the most expensive function call. Analyzing further, most of the cost is in QueryHistory(). Moreover QueryHistory is getting called once per file making cumulative cost high.

o Why is QueryHistory() call expensive? Because it uses “yield” construct to give better response time in UI. Please refer the documentation for more details.

· If the number of files is less, the performance of task is limited by cost of QueryLabel(). Again this is dependent of the number of labels that exist on AT

Machine Details

  • Client/BM on the same machine with configuration @ 2.79 GHz, 512 MB RAM
  • AT configuration @ 3 GHz, 1 GB RAM