4 using System.Diagnostics;
6 namespace SiliconStudio.
Paradox.Shaders.Parser.Performance
10 private static Stopwatch TotalTime =
new Stopwatch();
13 private static Stopwatch
CommonVisit =
new Stopwatch();
21 private static int VisitVariableCount = 0;
22 private static int CommonVisitCount = 0;
23 private static int FindDeclarationScopeCount = 0;
24 private static int FindDeclarationsFromObjectCount = 0;
25 private static int FindDeclarationsCount = 0;
26 private static int ProcessMethodInvocationCount = 0;
27 private static int CheckNameConflictCount = 0;
28 private static int HasExternQualifierCount = 0;
30 private static int nbShaders = 0;
36 case SemanticStage.Global:
39 case SemanticStage.VisitVariable:
40 VisitVariable.Start();
43 case SemanticStage.CommonVisit:
47 case SemanticStage.FindDeclarationScope:
48 FindDeclarationScope.Start();
49 ++FindDeclarationScopeCount;
51 case SemanticStage.FindDeclarationsFromObject:
52 FindDeclarationsFromObject.Start();
53 ++FindDeclarationsFromObjectCount;
55 case SemanticStage.FindDeclarations:
56 FindDeclarations.Start();
57 ++FindDeclarationsCount;
59 case SemanticStage.ProcessMethodInvocation:
60 ProcessMethodInvocation.Start();
61 ++ProcessMethodInvocationCount;
63 case SemanticStage.CheckNameConflict:
64 CheckNameConflict.Start();
65 ++CheckNameConflictCount;
67 case SemanticStage.HasExternQualifier:
68 HasExternQualifier.Start();
69 ++HasExternQualifierCount;
78 case SemanticStage.Global:
81 case SemanticStage.VisitVariable:
84 case SemanticStage.CommonVisit:
87 case SemanticStage.FindDeclarationScope:
88 FindDeclarationScope.Stop();
90 case SemanticStage.FindDeclarationsFromObject:
91 FindDeclarationsFromObject.Stop();
93 case SemanticStage.FindDeclarations:
94 FindDeclarations.Stop();
96 case SemanticStage.ProcessMethodInvocation:
97 ProcessMethodInvocation.Stop();
99 case SemanticStage.CheckNameConflict:
100 CheckNameConflict.Stop();
102 case SemanticStage.HasExternQualifier:
103 HasExternQualifier.Stop();
118 VisitVariable.Reset();
120 FindDeclarationScope.Reset();
121 FindDeclarationsFromObject.Reset();
122 FindDeclarations.Reset();
123 ProcessMethodInvocation.Reset();
124 CheckNameConflict.Reset();
125 HasExternQualifier.Reset();
127 VisitVariableCount = 0;
128 CommonVisitCount = 0;
129 FindDeclarationScopeCount = 0;
130 FindDeclarationsFromObjectCount = 0;
131 FindDeclarationsCount = 0;
132 ProcessMethodInvocationCount = 0;
133 CheckNameConflictCount = 0;
134 HasExternQualifierCount = 0;
140 Console.WriteLine(
@"--------------------------TOTAL SEMANTIC ANALYZER---------------------------");
141 Console.WriteLine(
@"{0} shader(s) analyzed in {1} ms, {2} ms per shader", nbShaders, TotalTime.ElapsedMilliseconds, nbShaders == 0 ? 0 : TotalTime.ElapsedMilliseconds / nbShaders);
142 Console.WriteLine(
@"VisitVariable {0} ms for {1} calls", VisitVariable.ElapsedMilliseconds, VisitVariableCount);
143 Console.WriteLine(
@"CommonVisit took {0} ms for {1} calls", CommonVisit.ElapsedMilliseconds, CommonVisitCount);
144 Console.WriteLine(
@"FindDeclarationScope took {0} ms for {1} calls", FindDeclarationScope.ElapsedMilliseconds, FindDeclarationScopeCount);
145 Console.WriteLine(
@"FindDeclarationsFromObject took {0} ms for {1} calls", FindDeclarationsFromObject.ElapsedMilliseconds, FindDeclarationsFromObjectCount);
146 Console.WriteLine(
@"FindDeclarations took {0} ms for {1} calls", FindDeclarations.ElapsedMilliseconds, FindDeclarationsCount);
147 Console.WriteLine(
@"ProcessMethodInvocation took {0} ms for {1} calls", ProcessMethodInvocation.ElapsedMilliseconds, ProcessMethodInvocationCount);
148 Console.WriteLine(
@"CheckNameConflict took {0} ms for {1} calls", CheckNameConflict.ElapsedMilliseconds, CheckNameConflictCount);
149 Console.WriteLine(
@"HasExternQualifier took {0} ms for {1} calls", HasExternQualifier.ElapsedMilliseconds, HasExternQualifierCount);
150 Console.WriteLine(
@"-------------------------------------------------------------------------------");