diff --git a/.github/workflows/speed-comparison.yml b/.github/workflows/speed-comparison.yml index eed61a52cd..07aff6692e 100644 --- a/.github/workflows/speed-comparison.yml +++ b/.github/workflows/speed-comparison.yml @@ -47,6 +47,6 @@ jobs: run: dotnet build -c Release working-directory: "tools/speed-comparison/MSTestTimer" - - name: Run Pipeline + - name: Run Benchmark run: dotnet run -c Release - working-directory: "tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline" + working-directory: "tools/speed-comparison/Tests.Benchmark" diff --git a/Directory.Packages.props b/Directory.Packages.props index 2a2dedd366..89854273f3 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -4,6 +4,7 @@ + @@ -25,14 +26,14 @@ - - - + + + - + diff --git a/tools/Directory.Build.props b/tools/Directory.Build.props new file mode 100644 index 0000000000..c1df2220dd --- /dev/null +++ b/tools/Directory.Build.props @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs b/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs index 35bf8b7afe..55b508d3f4 100644 --- a/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs +++ b/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs @@ -1,24 +1,8 @@ -using System.Diagnostics; - namespace MSTestTimer; [TestClass] public class Tests { - private static readonly Stopwatch Stopwatch = new(); - - [ClassInitialize] - public static void Setup(TestContext _) - { - Stopwatch.Start(); - } - - [ClassCleanup] - public static void Cleanup() - { - Console.WriteLine(Stopwatch.Elapsed); - } - [TestMethod] [DynamicData(nameof(Repeat), DynamicDataSourceType.Method)] public async Task TestMethod1(int _) @@ -28,9 +12,6 @@ public async Task TestMethod1(int _) public static IEnumerable Repeat() { - foreach (var i in Enumerable.Range(0, 1001)) - { - yield return [i]; - } + return Enumerable.Range(0, 100).Select(i => (object[])[i]); } } \ No newline at end of file diff --git a/tools/speed-comparison/NUnitTimer/NUnitTimer/Tests.cs b/tools/speed-comparison/NUnitTimer/NUnitTimer/Tests.cs index 91c0e78e63..181cc22e9a 100644 --- a/tools/speed-comparison/NUnitTimer/NUnitTimer/Tests.cs +++ b/tools/speed-comparison/NUnitTimer/NUnitTimer/Tests.cs @@ -1,25 +1,9 @@ -using System.Diagnostics; - namespace NUnitTimer; [Parallelizable(ParallelScope.All)] public class Tests { - private readonly Stopwatch _stopwatch = new(); - - [OneTimeSetUp] - public void Setup() - { - _stopwatch.Start(); - } - - [OneTimeTearDown] - public void Teardown() - { - Console.WriteLine(_stopwatch.Elapsed); - } - - [Test, Repeat(1_000)] + [Test, Repeat(100)] public async Task Test1() { await Task.Delay(50); diff --git a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/.idea/.idea.TUnit.SpeedComparison.Pipeline/.idea/.gitignore b/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/.idea/.idea.TUnit.SpeedComparison.Pipeline/.idea/.gitignore deleted file mode 100644 index 3b3e058f8e..0000000000 --- a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/.idea/.idea.TUnit.SpeedComparison.Pipeline/.idea/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Rider ignored files -/.idea.TUnit.SpeedComparison.Pipeline.iml -/modules.xml -/contentModel.xml -/projectSettingsUpdater.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/.idea/.idea.TUnit.SpeedComparison.Pipeline/.idea/encodings.xml b/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/.idea/.idea.TUnit.SpeedComparison.Pipeline/.idea/encodings.xml deleted file mode 100644 index df87cf951f..0000000000 --- a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/.idea/.idea.TUnit.SpeedComparison.Pipeline/.idea/encodings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/.idea/.idea.TUnit.SpeedComparison.Pipeline/.idea/material_theme_project_new.xml b/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/.idea/.idea.TUnit.SpeedComparison.Pipeline/.idea/material_theme_project_new.xml deleted file mode 100644 index a4167976b0..0000000000 --- a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/.idea/.idea.TUnit.SpeedComparison.Pipeline/.idea/material_theme_project_new.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline.sln b/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline.sln deleted file mode 100644 index 062957c36a..0000000000 --- a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline.sln +++ /dev/null @@ -1,16 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TUnit.SpeedComparison.Pipeline", "TUnit.SpeedComparison.Pipeline\TUnit.SpeedComparison.Pipeline.csproj", "{B41449E1-D040-458A-862A-CD0958B06CA1}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B41449E1-D040-458A-862A-CD0958B06CA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B41449E1-D040-458A-862A-CD0958B06CA1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B41449E1-D040-458A-862A-CD0958B06CA1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B41449E1-D040-458A-862A-CD0958B06CA1}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal diff --git a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/FindProjectsModule.cs b/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/FindProjectsModule.cs deleted file mode 100644 index d439d3fb7f..0000000000 --- a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/FindProjectsModule.cs +++ /dev/null @@ -1,31 +0,0 @@ -using ModularPipelines.Context; -using ModularPipelines.Extensions; -using ModularPipelines.Git.Extensions; -using ModularPipelines.Modules; -using File = ModularPipelines.FileSystem.File; - -namespace TUnit.SpeedComparison.Pipeline; - -public class FindProjectsModule : Module -{ - protected override async Task ExecuteAsync(IPipelineContext context, CancellationToken cancellationToken) - { - await Task.Yield(); - return new ProjectPaths - { - TUnit = Find(context, "TUnitTimer.csproj"), - xUnit = Find(context, "xUnitTimer.csproj"), - NUnit = Find(context, "NUnitTimer.csproj"), - MSTest = Find(context, "MSTestTimer.csproj"), - }; - } - - private File Find(IPipelineContext context, string fileName) - { - return context.Git() - .RootDirectory - .AssertExists() - .FindFile(x => x.Name == fileName) - .AssertExists(); - } -} \ No newline at end of file diff --git a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/MSTestModule.cs b/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/MSTestModule.cs deleted file mode 100644 index d1ed177e4c..0000000000 --- a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/MSTestModule.cs +++ /dev/null @@ -1,28 +0,0 @@ -using ModularPipelines.Attributes; -using ModularPipelines.Context; -using ModularPipelines.DotNet.Extensions; -using ModularPipelines.DotNet.Options; -using ModularPipelines.Extensions; -using ModularPipelines.Git.Extensions; -using ModularPipelines.GitHub.Extensions; -using ModularPipelines.Models; -using ModularPipelines.Modules; - -namespace TUnit.SpeedComparison.Pipeline; - -[NotInParallel("SpeedComparison")] -[DependsOn] -public class MSTestModule : Module -{ - protected override async Task ExecuteAsync(IPipelineContext context, CancellationToken cancellationToken) - { - var projectPaths = await GetModule(); - var project = projectPaths.Value!.MSTest; - - return await context.DotNet().Test(new DotNetTestOptions(project) - { - Configuration = Configuration.Release, - NoBuild = true - }, cancellationToken); - } -} \ No newline at end of file diff --git a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/NUnitModule.cs b/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/NUnitModule.cs deleted file mode 100644 index f7c6edc5ab..0000000000 --- a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/NUnitModule.cs +++ /dev/null @@ -1,28 +0,0 @@ -using ModularPipelines.Attributes; -using ModularPipelines.Context; -using ModularPipelines.DotNet.Extensions; -using ModularPipelines.DotNet.Options; -using ModularPipelines.Extensions; -using ModularPipelines.Git.Extensions; -using ModularPipelines.GitHub.Extensions; -using ModularPipelines.Models; -using ModularPipelines.Modules; - -namespace TUnit.SpeedComparison.Pipeline; - -[NotInParallel("SpeedComparison")] -[DependsOn] -public class NUnitModule : Module -{ - protected override async Task ExecuteAsync(IPipelineContext context, CancellationToken cancellationToken) - { - var projectPaths = await GetModule(); - var project = projectPaths.Value!.NUnit; - - return await context.DotNet().Test(new DotNetTestOptions(project) - { - Configuration = Configuration.Release, - NoBuild = true - }, cancellationToken); - } -} \ No newline at end of file diff --git a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/Program.cs b/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/Program.cs deleted file mode 100644 index aa30c683fc..0000000000 --- a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/Program.cs +++ /dev/null @@ -1,10 +0,0 @@ -using ModularPipelines.Host; -using TUnit.SpeedComparison.Pipeline; - -await PipelineHostBuilder.Create() - .AddModule() - .AddModule() - .AddModule() - .AddModule() - .AddModule() - .ExecutePipelineAsync(); \ No newline at end of file diff --git a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/ProjectPaths.cs b/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/ProjectPaths.cs deleted file mode 100644 index a15e1aac16..0000000000 --- a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/ProjectPaths.cs +++ /dev/null @@ -1,11 +0,0 @@ -using File = ModularPipelines.FileSystem.File; - -namespace TUnit.SpeedComparison.Pipeline; - -public record ProjectPaths -{ - public required File TUnit { get; init; } - public required File xUnit { get; init; } - public required File NUnit { get; init; } - public required File MSTest { get; init; } -} \ No newline at end of file diff --git a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline.csproj b/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline.csproj deleted file mode 100644 index 5f1506ff53..0000000000 --- a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline.csproj +++ /dev/null @@ -1,13 +0,0 @@ - - - Exe - net8.0 - enable - enable - - - - - - - \ No newline at end of file diff --git a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/TUnitModule.cs b/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/TUnitModule.cs deleted file mode 100644 index 4f67a57868..0000000000 --- a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/TUnitModule.cs +++ /dev/null @@ -1,29 +0,0 @@ -using ModularPipelines.Attributes; -using ModularPipelines.Context; -using ModularPipelines.DotNet.Extensions; -using ModularPipelines.DotNet.Options; -using ModularPipelines.Extensions; -using ModularPipelines.Git.Extensions; -using ModularPipelines.GitHub.Extensions; -using ModularPipelines.Models; -using ModularPipelines.Modules; - -namespace TUnit.SpeedComparison.Pipeline; - -[NotInParallel("SpeedComparison")] -[DependsOn] -public class TUnitModule : Module -{ - protected override async Task ExecuteAsync(IPipelineContext context, CancellationToken cancellationToken) - { - var projectPaths = await GetModule(); - var project = projectPaths.Value!.TUnit; - - return await context.DotNet().Run(new DotNetRunOptions - { - Project = project, - Configuration = Configuration.Release, - NoBuild = true - }, cancellationToken); - } -} \ No newline at end of file diff --git a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/xUnitModule.cs b/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/xUnitModule.cs deleted file mode 100644 index b9d47fb5da..0000000000 --- a/tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/xUnitModule.cs +++ /dev/null @@ -1,28 +0,0 @@ -using ModularPipelines.Attributes; -using ModularPipelines.Context; -using ModularPipelines.DotNet.Extensions; -using ModularPipelines.DotNet.Options; -using ModularPipelines.Extensions; -using ModularPipelines.Git.Extensions; -using ModularPipelines.GitHub.Extensions; -using ModularPipelines.Models; -using ModularPipelines.Modules; - -namespace TUnit.SpeedComparison.Pipeline; - -[NotInParallel("SpeedComparison")] -[DependsOn] -public class xUnitModule : Module -{ - protected override async Task ExecuteAsync(IPipelineContext context, CancellationToken cancellationToken) - { - var projectPaths = await GetModule(); - var project = projectPaths.Value!.xUnit; - - return await context.DotNet().Test(new DotNetTestOptions(project) - { - Configuration = Configuration.Release, - NoBuild = true - }, cancellationToken); - } -} \ No newline at end of file diff --git a/tools/speed-comparison/TUnitTimer/TUnitTimer/TUnitTimer.csproj b/tools/speed-comparison/TUnitTimer/TUnitTimer/TUnitTimer.csproj index 16b7e3f3d7..d31495f482 100644 --- a/tools/speed-comparison/TUnitTimer/TUnitTimer/TUnitTimer.csproj +++ b/tools/speed-comparison/TUnitTimer/TUnitTimer/TUnitTimer.csproj @@ -3,8 +3,6 @@ net8.0 enable enable - false - true diff --git a/tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs b/tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs index 47148db5c1..cc859bf843 100644 --- a/tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs +++ b/tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs @@ -1,24 +1,8 @@ -using System.Diagnostics; - namespace TUnitTimer; public class Tests { - private static readonly Stopwatch Stopwatch = new(); - - [Before(Class)] - public static void Setup() - { - Stopwatch.Start(); - } - - [After(Class)] - public static void Teardown() - { - Console.WriteLine(Stopwatch.Elapsed); - } - - [Test, Repeat(1_000)] + [Test, Repeat(99)] public async Task Test1() { await Task.Delay(50); diff --git a/tools/speed-comparison/TestProjects.sln b/tools/speed-comparison/TestProjects.sln index 5d0108239c..6d326352a8 100644 --- a/tools/speed-comparison/TestProjects.sln +++ b/tools/speed-comparison/TestProjects.sln @@ -8,6 +8,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NUnitTimer", "NUnitTimer\NU EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSTestTimer", "MSTestTimer\MSTestTimer\MSTestTimer.csproj", "{B225ACB3-8E1B-4649-8D51-ADBFCFFA48E8}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.Benchmark", "Tests.Benchmark\Tests.Benchmark.csproj", "{F8678629-33C9-4A75-9575-CB8EC1DA218E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -30,5 +32,9 @@ Global {B225ACB3-8E1B-4649-8D51-ADBFCFFA48E8}.Debug|Any CPU.Build.0 = Debug|Any CPU {B225ACB3-8E1B-4649-8D51-ADBFCFFA48E8}.Release|Any CPU.ActiveCfg = Release|Any CPU {B225ACB3-8E1B-4649-8D51-ADBFCFFA48E8}.Release|Any CPU.Build.0 = Release|Any CPU + {F8678629-33C9-4A75-9575-CB8EC1DA218E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F8678629-33C9-4A75-9575-CB8EC1DA218E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F8678629-33C9-4A75-9575-CB8EC1DA218E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F8678629-33C9-4A75-9575-CB8EC1DA218E}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs b/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs new file mode 100644 index 0000000000..2849afbae9 --- /dev/null +++ b/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs @@ -0,0 +1,60 @@ +using System.Diagnostics; +using BenchmarkDotNet.Attributes; +using Process = System.Diagnostics.Process; + +[MarkdownExporterAttribute.GitHub] +public class Benchmarks +{ + private static string TUnitPath = GetProjectPath("TUnitTimer"); + private static string NUnitPath = GetProjectPath("NUnitTimer"); + private static string xUnitPath = GetProjectPath("xUnitTimer"); + private static string MSTestPath = GetProjectPath("MSTestTimer"); + + [Benchmark] + public async Task TUnit() + { + await Process.Start(new ProcessStartInfo("dotnet", "run --no-build -c Release") + { + WorkingDirectory = TUnitPath, + })!.WaitForExitAsync(); + } + + [Benchmark] + public async Task NUnit() + { + await Process.Start(new ProcessStartInfo("dotnet", "test --no-build -c Release") + { + WorkingDirectory = NUnitPath, + })!.WaitForExitAsync(); + } + + [Benchmark] + public async Task xUnit() + { + await Process.Start(new ProcessStartInfo("dotnet", "test --no-build -c Release") + { + WorkingDirectory = xUnitPath, + })!.WaitForExitAsync(); + } + + [Benchmark] + public async Task MSTest() + { + await Process.Start(new ProcessStartInfo("dotnet", "test --no-build -c Release") + { + WorkingDirectory = MSTestPath, + })!.WaitForExitAsync(); + } + + private static string GetProjectPath(string name) + { + var folder = new DirectoryInfo(Environment.CurrentDirectory); + + while (folder.Name != "speed-comparison") + { + folder = folder.Parent!; + } + + return Path.Combine(folder.FullName, name, name); + } +} \ No newline at end of file diff --git a/tools/speed-comparison/Tests.Benchmark/Program.cs b/tools/speed-comparison/Tests.Benchmark/Program.cs new file mode 100644 index 0000000000..14c999dd9a --- /dev/null +++ b/tools/speed-comparison/Tests.Benchmark/Program.cs @@ -0,0 +1,14 @@ +using BenchmarkDotNet.Running; + +BenchmarkRunner.Run(); + +var output = new DirectoryInfo(Environment.CurrentDirectory) + .GetFiles("*.md", SearchOption.AllDirectories) + .First(); + +var file = Environment.GetEnvironmentVariable("GITHUB_STEP_SUMMARY"); + +if (!string.IsNullOrEmpty(file)) +{ + await File.WriteAllTextAsync(file, await File.ReadAllTextAsync(output.FullName)); +} \ No newline at end of file diff --git a/tools/speed-comparison/Tests.Benchmark/Tests.Benchmark.csproj b/tools/speed-comparison/Tests.Benchmark/Tests.Benchmark.csproj new file mode 100644 index 0000000000..552fcf72e5 --- /dev/null +++ b/tools/speed-comparison/Tests.Benchmark/Tests.Benchmark.csproj @@ -0,0 +1,14 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + diff --git a/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs b/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs index 827f79f108..0daed1da14 100644 --- a/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs +++ b/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs @@ -1,11 +1,7 @@ namespace xUnitTimer; -public class Tests : IClassFixture +public class Tests { - public Tests(Timer timer) - { - } - [Theory, MemberData(nameof(Repeat))] public async Task Test1(object _) { @@ -14,9 +10,6 @@ public async Task Test1(object _) public static IEnumerable Repeat() { - foreach (var i in Enumerable.Range(0, 1001)) - { - yield return [i]; - } + return Enumerable.Range(0, 100).Select(i => (object[])[i]); } } \ No newline at end of file diff --git a/tools/speed-comparison/xUnitTimer/xUnitTimer/Timer.cs b/tools/speed-comparison/xUnitTimer/xUnitTimer/Timer.cs deleted file mode 100644 index 82cd6f9308..0000000000 --- a/tools/speed-comparison/xUnitTimer/xUnitTimer/Timer.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Diagnostics; - -namespace xUnitTimer; - -public class Timer : IDisposable -{ - private readonly Stopwatch _stopwatch = Stopwatch.StartNew(); - - public void Dispose() - { - Console.WriteLine(_stopwatch.Elapsed); - } -} \ No newline at end of file