4 using System.Diagnostics;
6 namespace SiliconStudio.
Paradox.Shaders.Parser.Performance
10 private static Stopwatch
Global =
new Stopwatch();
16 private static Stopwatch
TagCleaner =
new Stopwatch();
27 private static int StreamFieldVisitorCount;
33 case StreamCreatorStage.Global:
36 case StreamCreatorStage.StreamAnalyzer:
37 StreamAnalyzer.Start();
39 case StreamCreatorStage.FindEntryPoint:
40 FindEntryPoint.Start();
42 case StreamCreatorStage.StreamAnalysisPerShader:
43 StreamAnalysisPerShader.Start();
45 case StreamCreatorStage.BubbleUpStreamUsages:
46 BubbleUpStreamUsages.Start();
48 case StreamCreatorStage.ComputeShaderStreamAnalysis:
49 ComputeShaderStreamAnalysis.Start();
51 case StreamCreatorStage.TagCleaner:
54 case StreamCreatorStage.GenerateStreams:
55 GenerateStreams.Start();
57 case StreamCreatorStage.RemoveUselessAndSortMethods:
58 RemoveUselessAndSortMethods.Start();
60 case StreamCreatorStage.PropagateStreamsParameter:
61 PropagateStreamsParameter.Start();
63 case StreamCreatorStage.TransformStreamsAssignments:
64 TransformStreamsAssignments.Start();
66 case StreamCreatorStage.AssignSearch:
69 case StreamCreatorStage.CreateOutputFromStream:
70 CreateOutputFromStream.Start();
72 case StreamCreatorStage.CreateStreamFromInput:
73 CreateStreamFromInput.Start();
75 case StreamCreatorStage.StreamFieldVisitor:
76 StreamFieldVisitor.Start();
77 ++StreamFieldVisitorCount;
79 case StreamCreatorStage.StreamFieldVisitorClone:
80 StreamFieldVisitorClone.Start();
89 case StreamCreatorStage.Global:
92 case StreamCreatorStage.StreamAnalyzer:
93 StreamAnalyzer.Stop();
95 case StreamCreatorStage.FindEntryPoint:
96 FindEntryPoint.Stop();
98 case StreamCreatorStage.StreamAnalysisPerShader:
99 StreamAnalysisPerShader.Stop();
101 case StreamCreatorStage.BubbleUpStreamUsages:
102 BubbleUpStreamUsages.Stop();
104 case StreamCreatorStage.ComputeShaderStreamAnalysis:
105 ComputeShaderStreamAnalysis.Stop();
107 case StreamCreatorStage.TagCleaner:
110 case StreamCreatorStage.GenerateStreams:
111 GenerateStreams.Stop();
113 case StreamCreatorStage.RemoveUselessAndSortMethods:
114 RemoveUselessAndSortMethods.Stop();
116 case StreamCreatorStage.PropagateStreamsParameter:
117 PropagateStreamsParameter.Stop();
119 case StreamCreatorStage.TransformStreamsAssignments:
120 TransformStreamsAssignments.Stop();
122 case StreamCreatorStage.AssignSearch:
125 case StreamCreatorStage.CreateOutputFromStream:
126 CreateOutputFromStream.Stop();
128 case StreamCreatorStage.CreateStreamFromInput:
129 CreateStreamFromInput.Stop();
131 case StreamCreatorStage.StreamFieldVisitor:
132 StreamFieldVisitor.Stop();
134 case StreamCreatorStage.StreamFieldVisitorClone:
135 StreamFieldVisitorClone.Stop();
143 StreamAnalyzer.Reset();
144 FindEntryPoint.Reset();
145 StreamAnalysisPerShader.Reset();
146 BubbleUpStreamUsages.Reset();
147 ComputeShaderStreamAnalysis.Reset();
149 GenerateStreams.Reset();
150 RemoveUselessAndSortMethods.Reset();
151 PropagateStreamsParameter.Reset();
152 TransformStreamsAssignments.Reset();
153 AssignSearch.Reset();
154 CreateOutputFromStream.Reset();
155 CreateStreamFromInput.Reset();
156 StreamFieldVisitor.Reset();
157 StreamFieldVisitorClone.Reset();
159 StreamFieldVisitorCount = 0;
165 Console.WriteLine(
@"----------------------------STREAM CREATOR ANALYZER-----------------------------");
166 Console.WriteLine(
@"Stream creation took {0} ms", Global.ElapsedMilliseconds);
167 Console.WriteLine(
@"StreamAnalyzer took {0} ms", StreamAnalyzer.ElapsedMilliseconds);
168 Console.WriteLine(
@"FindEntryPoint took {0} ms", FindEntryPoint.ElapsedMilliseconds);
169 Console.WriteLine(
@"StreamAnalysisPerShader took {0} ms", StreamAnalysisPerShader.ElapsedMilliseconds);
170 Console.WriteLine(
@"BubbleUpStreamUsages took {0} ms", BubbleUpStreamUsages.ElapsedMilliseconds);
171 Console.WriteLine(
@"ComputeShaderStreamAnalysis took {0} ms", ComputeShaderStreamAnalysis.ElapsedMilliseconds);
172 Console.WriteLine(
@"TagCleaner took {0} ms", TagCleaner.ElapsedMilliseconds);
173 Console.WriteLine(
@"GenerateStreams took {0} ms", GenerateStreams.ElapsedMilliseconds);
174 Console.WriteLine(
@"RemoveUselessAndSortMethods took {0} ms", RemoveUselessAndSortMethods.ElapsedMilliseconds);
175 Console.WriteLine(
@"PropagateStreamsParameter took {0} ms", PropagateStreamsParameter.ElapsedMilliseconds);
176 Console.WriteLine(
@"TransformStreamsAssignments took {0} ms", TransformStreamsAssignments.ElapsedMilliseconds);
177 Console.WriteLine(
@"AssignSearch took {0} ms", AssignSearch.ElapsedMilliseconds);
178 Console.WriteLine(
@"CreateOutputFromStream took {0} ms", CreateOutputFromStream.ElapsedMilliseconds);
179 Console.WriteLine(
@"CreateStreamFromInput took {0} ms", CreateStreamFromInput.ElapsedMilliseconds);
180 Console.WriteLine(
@"StreamFieldVisitor took {0} ms for {1} calls", StreamFieldVisitor.ElapsedMilliseconds, StreamFieldVisitorCount);
181 Console.WriteLine(
@"StreamFieldVisitorClone took {0} ms", StreamFieldVisitorClone.ElapsedMilliseconds);
182 Console.WriteLine(
@"-------------------------------------------------------------------------------");