This repository was archived by the owner on Oct 4, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1k
This repository was archived by the owner on Oct 4, 2021. It is now read-only.
Slow RefactoringEssentials analyzers #4334
Copy link
Copy link
Closed
Description
FieldCanBeMadeReadOnly - dotnet/roslyn#19067
0.94% <Analyze>b__0 • 1,199 ms • RefactoringEssentials.CSharp.Diagnostics.FieldCanBeMadeReadOnlyAnalyzer+<>c__DisplayClass4_0.<Analyze>b__0(SyntaxTreeAnalysisContext)
0.87% GetSymbolInfo • 1,103 ms • Microsoft.CodeAnalysis.CSharp.CSharpExtensions.GetSymbolInfo(SemanticModel, ExpressionSyntax, CancellationToken)
► 0.06% IsAltered • 74 ms • RefactoringEssentials.CSharp.Diagnostics.FieldCanBeMadeReadOnlyAnalyzer.IsAltered(SemanticModel, MemberDeclarationSyntax, ISymbol, CancellationToken, out Boolean)
► 0.00% MoveNext • 4.6 ms • System.Linq.Enumerable+<SelectManyIterator>d__17`2.MoveNext()
0.00% [Unknown] • 3.6 ms
0.00% IsWrittenTo • 2.8 ms • RefactoringEssentials.ExpressionSyntaxExtensions.IsWrittenTo(ExpressionSyntax)
0.00% GetConstantValue • 2.8 ms • Microsoft.CodeAnalysis.SemanticModel.GetConstantValue(SyntaxNode, CancellationToken)
0.00% MoveNext • 1.2 ms • System.Linq.Enumerable+<OfTypeIterator>d__93`1.MoveNext()
► 0.00% GetMembersFromAllParts • 1.0 ms • RefactoringEssentials.ClassDeclarationSyntaxExtensions.GetMembersFromAllParts(ClassDeclarationSyntax, SemanticModel)
0.00% OfType • 1.0 ms • System.Linq.Enumerable.OfType(IEnumerable)
0.00% ThrowIfCancellationRequested • 0.1 ms • System.Threading.CancellationToken.ThrowIfCancellationRequested()
0.00% clr.dll • 0.0000002 ms
► 0.00% GetReturnType • 0.0000002 ms • RefactoringEssentials.SymbolExtensions.GetReturnType(ISymbol)
0.00% get_Symbol • 0.0000002 ms • Microsoft.CodeAnalysis.SymbolInfo.get_Symbol()
0.00% ReportDiagnostic • 0.0000002 ms • Microsoft.CodeAnalysis.Diagnostics.SyntaxTreeAnalysisContext.ReportDiagnostic(Diagnostic)
0.00% GetEnumerator • 0.0000002 ms • System.Linq.Enumerable+<SelectManyIterator>d__17`2.GetEnumerator()
UnusedParameter - Use DFA here?
0.71% <Analyze>b__0 • 900 ms • RefactoringEssentials.CSharp.Diagnostics.UnusedParameterAnalyzer+<>c__DisplayClass4_0.<Analyze>b__0(SyntaxTreeAnalysisContext)
0.54% Visit • 692 ms • Microsoft.CodeAnalysis.CSharp.CSharpSyntaxWalker.Visit(SyntaxNode)
0.50% Accept • 639 ms • Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax.Accept(CSharpSyntaxVisitor)
► 0.49% GetSymbolInfo • 627 ms • Microsoft.CodeAnalysis.CSharp.CSharpExtensions.GetSymbolInfo(SemanticModel, ExpressionSyntax, CancellationToken)
► 0.00% VisitIdentifierName • 5.5 ms • RefactoringEssentials.CSharp.Diagnostics.UnusedParameterAnalyzer+GetDelgateUsagesVisitor.VisitIdentifierName(IdentifierNameSyntax)
► 0.00% DefaultVisit • 4.0 ms • Microsoft.CodeAnalysis.CSharp.LocalBinderFactory.DefaultVisit(SyntaxNode)
0.00% clr.dll • 2.0 ms
► 0.00% VisitIdentifierName • 1.0 ms • Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor.VisitIdentifierName(IdentifierNameSyntax)
► 0.01% Accept • 13 ms • Microsoft.CodeAnalysis.CSharp.Syntax.MemberAccessExpressionSyntax.Accept(CSharpSyntaxVisitor)
0.01% [Unknown] • 7.2 ms
► 0.00% Accept • 5.0 ms • Microsoft.CodeAnalysis.CSharp.Syntax.BlockSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 4.8 ms • Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 2.7 ms • Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionStatementSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 2.6 ms • Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 2.2 ms • Microsoft.CodeAnalysis.CSharp.Syntax.ContinueStatementSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 1.9 ms • Microsoft.CodeAnalysis.CSharp.Syntax.ArgumentListSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 1.7 ms • Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 1.6 ms • Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 1.5 ms • Microsoft.CodeAnalysis.CSharp.Syntax.TryStatementSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 1.2 ms • Microsoft.CodeAnalysis.CSharp.Syntax.CatchClauseSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 1.1 ms • Microsoft.CodeAnalysis.CSharp.Syntax.AssignmentExpressionSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 1.1 ms • Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax.Accept(CSharpSyntaxVisitor)
0.00% VisitExpressionStatement • 1.0 ms • Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor.VisitExpressionStatement(ExpressionStatementSyntax)
0.00% VisitOmittedArraySizeExpression • 0.8 ms • Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor.VisitOmittedArraySizeExpression(OmittedArraySizeExpressionSyntax)
0.00% VisitArgumentList • 0.7 ms • Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor.VisitArgumentList(ArgumentListSyntax)
► 0.00% Accept • 0.7 ms • Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 0.6 ms • Microsoft.CodeAnalysis.CSharp.Syntax.ReturnStatementSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% VisitForEachStatement • 0.0000005 ms • Microsoft.CodeAnalysis.CSharp.LocalBinderFactory.VisitForEachStatement(ForEachStatementSyntax)
► 0.00% Accept • 0.0000002 ms • Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 0.0000002 ms • Microsoft.CodeAnalysis.CSharp.Syntax.AccessorDeclarationSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% VisitParenthesizedLambdaExpression • 0.0000002 ms • Microsoft.CodeAnalysis.CSharp.LocalBinderFactory.VisitParenthesizedLambdaExpression(ParenthesizedLambdaExpressionSyntax)
0.16% Visit • 206 ms • RefactoringEssentials.CSharp.Diagnostics.UnusedParameterAnalyzer+NodeAnalyzer.Visit(SyntaxNode)
0.16% Visit • 205 ms • Microsoft.CodeAnalysis.CSharp.CSharpSyntaxWalker.Visit(SyntaxNode)
0.13% VisitMethodDeclaration • 162 ms • RefactoringEssentials.CSharp.Diagnostics.UnusedParameterAnalyzer+NodeAnalyzer.VisitMethodDeclaration(MethodDeclarationSyntax)
0.11% GetSymbolInfo • 134 ms • Microsoft.CodeAnalysis.CSharp.CSharpExtensions.GetSymbolInfo(SemanticModel, ExpressionSyntax, CancellationToken)
► 0.01% Analyze • 16 ms • RefactoringEssentials.CSharp.Diagnostics.UnusedParameterAnalyzer+NodeAnalyzer.Analyze(SeparatedSyntaxList, IEnumerable, SyntaxKind)
0.00% GetDeclaredSymbol • 5.4 ms • Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel.GetDeclaredSymbol(BaseMethodDeclarationSyntax, CancellationToken)
0.00% Contains • 2.0 ms • System.Collections.Generic.List`1.Contains(!0)
► 0.00% ExplicitInterfaceImplementations • 1.2 ms • RefactoringEssentials.SymbolExtensions.ExplicitInterfaceImplementations(ISymbol)
0.00% FindImplementationForInterfaceMember • 1.0 ms • Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol.FindImplementationForInterfaceMember(ISymbol)
0.00% [Unknown] • 0.004 ms
► 0.00% Any • 0.0000002 ms • System.Linq.Enumerable.Any(IEnumerable, Func)
0.00% GetEnumerator • 0.0000002 ms • Microsoft.CodeAnalysis.SyntaxTokenList.GetEnumerator()
► 0.02% VisitAnonymousMethodExpression • 27 ms • RefactoringEssentials.CSharp.Diagnostics.UnusedParameterAnalyzer+NodeAnalyzer.VisitAnonymousMethodExpression(AnonymousMethodExpressionSyntax)
► 0.00% VisitConstructorDeclaration • 2.9 ms • RefactoringEssentials.CSharp.Diagnostics.UnusedParameterAnalyzer+NodeAnalyzer.VisitConstructorDeclaration(ConstructorDeclarationSyntax)
► 0.00% VisitBlock • 0.8 ms • RefactoringEssentials.CSharp.Diagnostics.UnusedParameterAnalyzer+NodeAnalyzer.VisitBlock(BlockSyntax)
0.00% clr.dll • 1.0 ms
0.00% Contains • 1.3 ms • System.Linq.Enumerable.Contains(IEnumerable, !!0)
0.00% [Unknown] • 0.0000005 ms
► 0.00% [Truncated callstack] • 0.0000002 ms
► 0.00% IsFromGeneratedCode • 0.0000002 ms • RefactoringEssentials.GeneratedCodeRecognition.IsFromGeneratedCode(SemanticModel, CancellationToken)
ReplaceWithSingleCallToCount - IInvocationOperation to avoid binding?
0.58% <Initialize>b__3_0 • 736 ms • RefactoringEssentials.CSharp.Diagnostics.ReplaceWithSingleCallToCountAnalyzer+<>c.<Initialize>b__3_0(SyntaxNodeAnalysisContext)
► 0.55% GetSymbolInfo • 695 ms • Microsoft.CodeAnalysis.CSharp.CSharpExtensions.GetSymbolInfo(SemanticModel, ExpressionSyntax, CancellationToken)
► 0.03% TryGetDiagnostic • 39 ms • RefactoringEssentials.CSharp.Diagnostics.ReplaceWithSingleCallToCountAnalyzer.TryGetDiagnostic(SyntaxNodeAnalysisContext, out Diagnostic)
0.00% [Unknown] • 1.3 ms
0.00% HasPredicateVersion • 0.7 ms • RefactoringEssentials.CSharp.Diagnostics.ReplaceWithSingleCallToCountAnalyzer.HasPredicateVersion(IMethodSymbol)
RedundantToStringCall - IInvocationOperation to avoid binding?
0.44% AnalyzeInvocationExpression • 561 ms • RefactoringEssentials.CSharp.Diagnostics.RedundantToStringCallAnalyzer.AnalyzeInvocationExpression(SyntaxNodeAnalysisContext)
0.39% CheckFormattingCall • 499 ms • RefactoringEssentials.CSharp.Diagnostics.RedundantToStringCallAnalyzer.CheckFormattingCall(SyntaxNodeAnalysisContext, InvocationExpressionSyntax, ISymbol)
0.39% TryGetFormattingParameters • 491 ms • RefactoringEssentials.FormatStringHelper.TryGetFormattingParameters(SemanticModel, InvocationExpressionSyntax, out ExpressionSyntax, out IList, Func, CancellationToken)
0.37% GetSymbolInfoCore • 470 ms • Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel.GetSymbolInfoCore(SyntaxNode, CancellationToken)
► 0.01% Any • 12 ms • System.Linq.Enumerable.Any(IEnumerable, Func)
0.00% GetMembers • 6.0 ms • Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol.GetMembers(String)
0.00% get_ContainingType • 1.2 ms • Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol.get_ContainingType()
0.00% clr.dll • 0.000001 ms
0.00% OfType • 0.0000007 ms • System.Collections.Immutable.ImmutableArray`1.OfType()
0.00% clr.dll • 1.2 ms
0.00% get_Name • 1.0 ms • Microsoft.CodeAnalysis.CSharp.Symbol.get_Name()
0.00% Add • 0.0000002 ms • System.Collections.Generic.List`1.Add(!0)
► 0.03% CheckAutomaticToStringCallers • 39 ms • RefactoringEssentials.CSharp.Diagnostics.RedundantToStringCallAnalyzer.CheckAutomaticToStringCallers(SyntaxNodeAnalysisContext, InvocationExpressionSyntax, ISymbol)
► 0.01% CheckTargetedObject • 16 ms • RefactoringEssentials.CSharp.Diagnostics.RedundantToStringCallAnalyzer.CheckTargetedObject(SyntaxNodeAnalysisContext, InvocationExpressionSyntax, ISymbol)
0.00% [Unknown] • 3.1 ms
0.00% clr.dll • 1.1 ms
0.00% get_Expression • 1.0 ms • Microsoft.CodeAnalysis.CSharp.Syntax.MemberAccessExpressionSyntax.get_Expression()
RedundantUnsafeContextAnalyzer - Smarter syntax node action? IOperation? Avoid binding every IdentifierName?
0.42% <Initialize>b__1 • 536 ms • RefactoringEssentials.CSharp.Diagnostics.RedundantUnsafeContextAnalyzer+<>c__DisplayClass3_0.<Initialize>b__1(SyntaxTreeAnalysisContext)
0.42% Visit • 536 ms • Microsoft.CodeAnalysis.CSharp.CSharpSyntaxWalker.Visit(SyntaxNode)
0.42% VisitClassDeclaration • 535 ms • RefactoringEssentials.CSharp.Diagnostics.RedundantUnsafeContextAnalyzer+GatherVisitor.VisitClassDeclaration(ClassDeclarationSyntax)
0.42% VisitClassDeclaration • 535 ms • Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor.VisitClassDeclaration(ClassDeclarationSyntax)
0.42% DefaultVisit • 535 ms • Microsoft.CodeAnalysis.CSharp.CSharpSyntaxWalker.DefaultVisit(SyntaxNode)
0.42% Visit • 535 ms • Microsoft.CodeAnalysis.CSharp.CSharpSyntaxWalker.Visit(SyntaxNode)
0.39% Accept • 500 ms • Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax.Accept(CSharpSyntaxVisitor)
► 0.37% GetSymbolInfo • 465 ms • Microsoft.CodeAnalysis.CSharp.CSharpExtensions.GetSymbolInfo(SemanticModel, ExpressionSyntax, CancellationToken)
► 0.03% VisitIdentifierName • 32 ms • RefactoringEssentials.CSharp.Diagnostics.RedundantUnsafeContextAnalyzer+GatherVisitor.VisitIdentifierName(IdentifierNameSyntax)
► 0.00% VisitIdentifierName • 2.9 ms • Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor.VisitIdentifierName(IdentifierNameSyntax)
0.01% [Unknown] • 7.0 ms
► 0.00% VisitSimpleLambdaExpression • 5.9 ms • Microsoft.CodeAnalysis.CSharp.LocalBinderFactory.VisitSimpleLambdaExpression(SimpleLambdaExpressionSyntax)
► 0.00% Accept • 5.1 ms • Microsoft.CodeAnalysis.CSharp.Syntax.ArgumentListSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 3.5 ms • Microsoft.CodeAnalysis.CSharp.Syntax.BlockSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 3.3 ms • Microsoft.CodeAnalysis.CSharp.Syntax.ObjectCreationExpressionSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 2.2 ms • Microsoft.CodeAnalysis.CSharp.Syntax.MemberAccessExpressionSyntax.Accept(CSharpSyntaxVisitor)
0.00% Accept • 1.4 ms • Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 1.4 ms • Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 1.0 ms • Microsoft.CodeAnalysis.CSharp.Syntax.TryStatementSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 1.0 ms • Microsoft.CodeAnalysis.CSharp.Syntax.LiteralExpressionSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 1.0 ms • Microsoft.CodeAnalysis.CSharp.Syntax.CatchClauseSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 0.7 ms • Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionStatementSyntax.Accept(CSharpSyntaxVisitor)
► 0.00% Accept • 0.0000002 ms • Microsoft.CodeAnalysis.CSharp.Syntax.WhileStatementSyntax.Accept(CSharpSyntaxVisitor)
0.00% Contains • 0.5 ms • System.Linq.Enumerable.Contains(IEnumerable, !!0)
RedundantIfElseBlockAnalyzer - Maybe here check if the last statement in the matching if is a jump statement
0.08% <Initialize>b__3_0 • 106 ms • RefactoringEssentials.CSharp.Diagnostics.RedundantIfElseBlockAnalyzer+<>c.<Initialize>b__3_0(SyntaxNodeAnalysisContext)
0.08% TryGetDiagnostic • 106 ms • RefactoringEssentials.CSharp.Diagnostics.RedundantIfElseBlockAnalyzer.TryGetDiagnostic(SyntaxNodeAnalysisContext, out Diagnostic)
0.06% ElseIsRedundantControlFlow • 73 ms • RefactoringEssentials.CSharp.Diagnostics.RedundantIfElseBlockAnalyzer.ElseIsRedundantControlFlow(IfStatementSyntax, SyntaxNodeAnalysisContext)
0.06% AnalyzeControlFlow • 73 ms • Microsoft.CodeAnalysis.CSharp.CSharpExtensions.AnalyzeControlFlow(SemanticModel, StatementSyntax)
0.06% AnalyzeControlFlow • 73 ms • Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel.AnalyzeControlFlow(StatementSyntax)
0.06% AnalyzeControlFlow • 73 ms • Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel.AnalyzeControlFlow(StatementSyntax, StatementSyntax)
► 0.06% RegionAnalysisContext • 73 ms • Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel.RegionAnalysisContext(StatementSyntax, StatementSyntax)
0.00% clr.dll • 0.0000002 ms
0.01% get_EndPointIsReachable • 19 ms • Microsoft.CodeAnalysis.CSharp.CSharpControlFlowAnalysis.get_EndPointIsReachable()
► 0.01% HasConflictingNames • 14 ms • RefactoringEssentials.CSharp.Diagnostics.RedundantIfElseBlockAnalyzer.HasConflictingNames(SyntaxNodeAnalysisContext, IfStatementSyntax)
FROM HERE ON smaller values:
Local variable hides member - Roslyn implemented one in 15.7 dotnet/roslyn#19067
0.07% <Initialize>b__3_0 • 83 ms • RefactoringEssentials.CSharp.Diagnostics.LocalVariableHidesMemberAnalyzer+<>c.<Initialize>b__3_0(SyntaxNodeAnalysisContext)
0.07% TryGetDiagnostic • 83 ms • RefactoringEssentials.CSharp.Diagnostics.LocalVariableHidesMemberAnalyzer.TryGetDiagnostic(SyntaxNodeAnalysisContext, out Diagnostic)
0.04% LookupSymbols • 56 ms • Microsoft.CodeAnalysis.SemanticModel.LookupSymbols(Int32, INamespaceOrTypeSymbol, String, Boolean)
0.02% GetDeclaredSymbol • 25 ms • Microsoft.CodeAnalysis.ModelExtensions.GetDeclaredSymbol(SemanticModel, SyntaxNode, CancellationToken)
► 0.00% FirstOrDefault • 2.9 ms • System.Linq.ImmutableArrayExtensions.FirstOrDefault(ImmutableArray, Func)
0.00% clr.dll • 0.0000005 ms
AccessToStaticMemberViaDerivedType
0.05% <Initialize>b__3_0 • 69 ms • RefactoringEssentials.CSharp.Diagnostics.AccessToStaticMemberViaDerivedTypeAnalyzer+<>c.<Initialize>b__3_0(SyntaxNodeAnalysisContext)
► 0.05% GetSymbolInfo • 62 ms • Microsoft.CodeAnalysis.CSharp.CSharpExtensions.GetSymbolInfo(SemanticModel, ExpressionSyntax, CancellationToken)
► 0.00% TryGetDiagnostic • 5.2 ms • RefactoringEssentials.CSharp.Diagnostics.AccessToStaticMemberViaDerivedTypeAnalyzer.TryGetDiagnostic(SyntaxNodeAnalysisContext, out Diagnostic)
VS bug #591648