Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/NRefactory.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Grunwald <daniel@danielgrunwald.de>2012-07-29 16:59:05 +0400
committerDaniel Grunwald <daniel@danielgrunwald.de>2012-07-29 16:59:05 +0400
commit07fb3684cf90bd5d07f67e62a81c804e8a7370f7 (patch)
tree142dd981c9675174d0cdfded59cac6cae7d165ac /ICSharpCode.NRefactory.ConsistencyCheck
parent359fdd2382a1f5d00746994127681d66e29c1f41 (diff)
Add visitor benchmark.
Diffstat (limited to 'ICSharpCode.NRefactory.ConsistencyCheck')
-rw-r--r--ICSharpCode.NRefactory.ConsistencyCheck/ICSharpCode.NRefactory.ConsistencyCheck.csproj5
-rw-r--r--ICSharpCode.NRefactory.ConsistencyCheck/Program.cs2
-rw-r--r--ICSharpCode.NRefactory.ConsistencyCheck/VisitorBenchmark.cs58
3 files changed, 63 insertions, 2 deletions
diff --git a/ICSharpCode.NRefactory.ConsistencyCheck/ICSharpCode.NRefactory.ConsistencyCheck.csproj b/ICSharpCode.NRefactory.ConsistencyCheck/ICSharpCode.NRefactory.ConsistencyCheck.csproj
index 3ac8752d..e125b6b5 100644
--- a/ICSharpCode.NRefactory.ConsistencyCheck/ICSharpCode.NRefactory.ConsistencyCheck.csproj
+++ b/ICSharpCode.NRefactory.ConsistencyCheck/ICSharpCode.NRefactory.ConsistencyCheck.csproj
@@ -45,7 +45,7 @@
<Optimize>False</Optimize>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<DefineConstants>DEBUG;TRACE</DefineConstants>
- <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'net_4_5_Release' ">
<OutputPath>bin\Release\</OutputPath>
@@ -54,7 +54,7 @@
<Optimize>True</Optimize>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<DefineConstants>TRACE</DefineConstants>
- <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.Build" />
@@ -84,6 +84,7 @@
<Compile Include="ResolverTest.cs" />
<Compile Include="RoundtripTest.cs" />
<Compile Include="Solution.cs" />
+ <Compile Include="VisitorBenchmark.cs" />
<Compile Include="Xml\IncrementalXmlParserTests.cs" />
<Compile Include="Xml\XmlReaderTest.cs" />
</ItemGroup>
diff --git a/ICSharpCode.NRefactory.ConsistencyCheck/Program.cs b/ICSharpCode.NRefactory.ConsistencyCheck/Program.cs
index 97a7c678..53b4db27 100644
--- a/ICSharpCode.NRefactory.ConsistencyCheck/Program.cs
+++ b/ICSharpCode.NRefactory.ConsistencyCheck/Program.cs
@@ -57,6 +57,8 @@ namespace ICSharpCode.NRefactory.ConsistencyCheck
solution.AllFiles.Count(),
solution.Projects.Count);
+ VisitorBenchmark.Run(solution.AllFiles.Select(f => f.CompilationUnit));
+
using (new Timer("ID String test... ")) TypeSystemTests.IDStringConsistencyCheck(solution);
using (new Timer("Resolve unresolved members... ")) TypeSystemTests.ResolvedUnresolvedMembers(solution);
//RunTestOnAllFiles("Roundtripping test", RoundtripTest.RunTest);
diff --git a/ICSharpCode.NRefactory.ConsistencyCheck/VisitorBenchmark.cs b/ICSharpCode.NRefactory.ConsistencyCheck/VisitorBenchmark.cs
new file mode 100644
index 00000000..ce506111
--- /dev/null
+++ b/ICSharpCode.NRefactory.ConsistencyCheck/VisitorBenchmark.cs
@@ -0,0 +1,58 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this
+// software and associated documentation files (the "Software"), to deal in the Software
+// without restriction, including without limitation the rights to use, copy, modify, merge,
+// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or
+// substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using ICSharpCode.NRefactory.CSharp;
+
+namespace ICSharpCode.NRefactory.ConsistencyCheck
+{
+ public class VisitorBenchmark
+ {
+ public static void Run(IEnumerable<CompilationUnit> files)
+ {
+ files = files.ToList();
+ RunTest("DepthFirstAstVisitor", files, cu => cu.AcceptVisitor(new DepthFirst()));
+ RunTest("DepthFirstAstVisitor<object>", files, cu => cu.AcceptVisitor(new DepthFirst<object>()));
+ RunTest("DepthFirstAstVisitor<int>", files, cu => cu.AcceptVisitor(new DepthFirst<int>()));
+ RunTest("DepthFirstAstVisitor<object, object>", files, cu => cu.AcceptVisitor(new DepthFirst<object, object>(), null));
+ RunTest("DepthFirstAstVisitor<int, int>", files, cu => cu.AcceptVisitor(new DepthFirst<int, int>(), 0));
+ RunTest("ObservableAstVisitor", files, cu => cu.AcceptVisitor(new ObservableAstVisitor()));
+ RunTest("ObservableAstVisitor<object, object>", files, cu => cu.AcceptVisitor(new ObservableAstVisitor<object, object>(), null));
+ RunTest("ObservableAstVisitor<int, int>", files, cu => cu.AcceptVisitor(new ObservableAstVisitor<int, int>(), 0));
+ }
+
+ class DepthFirst : DepthFirstAstVisitor {}
+ class DepthFirst<T> : DepthFirstAstVisitor<T> {}
+ class DepthFirst<T, S> : DepthFirstAstVisitor<T, S> {}
+
+ static void RunTest(string text, IEnumerable<CompilationUnit> files, Action<CompilationUnit> action)
+ {
+ Stopwatch w = Stopwatch.StartNew();
+ foreach (var file in files) {
+ for (int i = 0; i < 20; i++) {
+ action(file);
+ }
+ }
+ w.Stop();
+ Console.WriteLine(text.PadRight(40) + ": " + w.Elapsed);
+ }
+ }
+}