During a profiling pass on a solution load of Roslyn.sln, I observed over 30 seconds of lock contention within this library.
The key offenders were the following:
| Method |
Exclusive time in lock contention |
Fix |
| JoinableTask.get_ApplicableJobSyncContext() |
7310ms |
#409 |
| JoinableTask.Complete() |
5340ms |
|
| JoinableTaskContext.get_Factory() |
3587ms |
#409 |
| JoinableTask.SetWrappedTask(Task) |
2505ms |
|
| JoinableTask.get_IsCompleted() |
2431ms |
|
| JoinableTaskCollection.Disjoin(JoinableTask) |
1727ms |
|
| JoinableTask.get_Task() |
1595ms |
#411 |
| JoinableTask.CompleteOnCurrentThread() |
1232ms |
|
| JoinableTaskCollection.Join() |
1155ms |
|
During a profiling pass on a solution load of Roslyn.sln, I observed over 30 seconds of lock contention within this library.
The key offenders were the following: