{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/2818","labels_url":"https://api.github.com/repos/dotnet/roslyn/issues/2818/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/roslyn/issues/2818/comments","events_url":"https://api.github.com/repos/dotnet/roslyn/issues/2818/events","html_url":"https://github.com/dotnet/roslyn/pull/2818","id":76894967,"number":2818,"title":"Add a new command line compiler switch \"/reportanalyzer\" to report analyzer execution times","user":{"login":"mavasani","id":10605811,"avatar_url":"https://avatars.githubusercontent.com/u/10605811?v=3","gravatar_id":"","url":"https://api.github.com/users/mavasani","html_url":"https://github.com/mavasani","followers_url":"https://api.github.com/users/mavasani/followers","following_url":"https://api.github.com/users/mavasani/following{/other_user}","gists_url":"https://api.github.com/users/mavasani/gists{/gist_id}","starred_url":"https://api.github.com/users/mavasani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mavasani/subscriptions","organizations_url":"https://api.github.com/users/mavasani/orgs","repos_url":"https://api.github.com/users/mavasani/repos","events_url":"https://api.github.com/users/mavasani/events{/privacy}","received_events_url":"https://api.github.com/users/mavasani/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dotnet/roslyn/labels/Area-Analyzers","name":"Area-Analyzers","color":"5319e7"},{"url":"https://api.github.com/repos/dotnet/roslyn/labels/cla-already-signed","name":"cla-already-signed","color":"009800"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2015-05-15T23:46:58Z","updated_at":"2015-05-16T00:16:40Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/dotnet/roslyn/pulls/2818","html_url":"https://github.com/dotnet/roslyn/pull/2818","diff_url":"https://github.com/dotnet/roslyn/pull/2818.diff","patch_url":"https://github.com/dotnet/roslyn/pull/2818.patch"},"body":"Output is grouped by analyzer assemblies and is displayed in descending order of execution times.\r\n\r\nNOTE: We do not display the total build time or the ratios between build time and analyzer execution time as the the actual wall clock time for analyzer execution is likely lesser due to multithreaded analyzer execution."},"comment":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/comments/102552653","html_url":"https://github.com/dotnet/roslyn/pull/2818#issuecomment-102552653","issue_url":"https://api.github.com/repos/dotnet/roslyn/issues/2818","id":102552653,"user":{"login":"mavasani","id":10605811,"avatar_url":"https://avatars.githubusercontent.com/u/10605811?v=3","gravatar_id":"","url":"https://api.github.com/users/mavasani","html_url":"https://github.com/mavasani","followers_url":"https://api.github.com/users/mavasani/followers","following_url":"https://api.github.com/users/mavasani/following{/other_user}","gists_url":"https://api.github.com/users/mavasani/gists{/gist_id}","starred_url":"https://api.github.com/users/mavasani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mavasani/subscriptions","organizations_url":"https://api.github.com/users/mavasani/orgs","repos_url":"https://api.github.com/users/mavasani/repos","events_url":"https://api.github.com/users/mavasani/events{/privacy}","received_events_url":"https://api.github.com/users/mavasani/received_events","type":"User","site_admin":false},"created_at":"2015-05-16T00:16:40Z","updated_at":"2015-05-16T00:16:40Z","body":"@shyamnamboodiripad The short answer is that our multithreaded mode of analyzer execution, which happens on background thread as compilation proceeds, makes it extremely difficult to compute the exact overhead added by analyzer execution. The total analyzer execution time we display here is basically sum of the duration taken by all the callbacks into analyzers. As the note is intended to indicate (but probably needs better wording as @JohnHamby pointed out - John do you have a better suggestion for what text should go here?), this sum will be much larger then actual wall clock time due to parallel execution. If we did display the overall compilation time, then the total analyzer time we display here will be invariably much larger then (total build time with analyzers - total build time without analyzers).\r\n\r\nThe goal of the analyzer execution times displayed here is to provide the user an overview of their analyzer execution profile and allow them to make relative comparisons between time taken by the executed analyzers, as opposed to finding out how much slower a build got due to analyzer execution. The latter needs to be explicitly measured by the user by either (a) triggering builds with and without analyzers or (b) running the build with analyzers under a profiler.\r\n"}}