From a14637a5cf16cb50b7b7f528b460b2ba10d5511a Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sun, 1 Sep 2024 23:57:52 +0100 Subject: [PATCH 01/15] Benchmarks --- .github/workflows/speed-comparison.yml | 4 +- Directory.Packages.props | 1 + tools/speed-comparison/TestProjects.sln | 6 +++ .../Tests.Benchmark/Benchmarks.cs | 43 +++++++++++++++++++ .../Tests.Benchmark/Program.cs | 14 ++++++ .../Tests.Benchmark/Tests.Benchmark.csproj | 14 ++++++ 6 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 tools/speed-comparison/Tests.Benchmark/Benchmarks.cs create mode 100644 tools/speed-comparison/Tests.Benchmark/Program.cs create mode 100644 tools/speed-comparison/Tests.Benchmark/Tests.Benchmark.csproj 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..782be50db9 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -4,6 +4,7 @@ + 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..979443d35e --- /dev/null +++ b/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs @@ -0,0 +1,43 @@ +using System.Diagnostics; +using BenchmarkDotNet.Attributes; +using Process = System.Diagnostics.Process; + +[MarkdownExporterAttribute.GitHub] +public class Benchmarks +{ + [Benchmark] + public async Task TUnit() + { + await Process.Start(new ProcessStartInfo("dotnet", "run") + { + WorkingDirectory = "../../../../TUnitTimer", + })!.WaitForExitAsync(); + } + + [Benchmark] + public async Task NUnit() + { + await Process.Start(new ProcessStartInfo("dotnet", "test") + { + WorkingDirectory = "../../../../NUnitTimer", + })!.WaitForExitAsync(); + } + + [Benchmark] + public async Task xUnit() + { + await Process.Start(new ProcessStartInfo("dotnet", "test") + { + WorkingDirectory = "../../../../xUnitTimer", + })!.WaitForExitAsync(); + } + + [Benchmark] + public async Task MSTest() + { + await Process.Start(new ProcessStartInfo("dotnet", "test") + { + WorkingDirectory = "../../../../MSTestTimer", + })!.WaitForExitAsync(); + } +} \ 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 + + + + + + + From b83bfbfec06850b2b31eb06ad6fd6ccbfef03528 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sun, 1 Sep 2024 23:59:02 +0100 Subject: [PATCH 02/15] Speed up --- tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs | 2 +- tools/speed-comparison/NUnitTimer/NUnitTimer/Tests.cs | 2 +- tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs | 2 +- tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs b/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs index 35bf8b7afe..6be2ad5f00 100644 --- a/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs +++ b/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs @@ -23,7 +23,7 @@ public static void Cleanup() [DynamicData(nameof(Repeat), DynamicDataSourceType.Method)] public async Task TestMethod1(int _) { - await Task.Delay(50); + await Task.CompletedTask; } public static IEnumerable Repeat() diff --git a/tools/speed-comparison/NUnitTimer/NUnitTimer/Tests.cs b/tools/speed-comparison/NUnitTimer/NUnitTimer/Tests.cs index 91c0e78e63..10736f851e 100644 --- a/tools/speed-comparison/NUnitTimer/NUnitTimer/Tests.cs +++ b/tools/speed-comparison/NUnitTimer/NUnitTimer/Tests.cs @@ -22,6 +22,6 @@ public void Teardown() [Test, Repeat(1_000)] public async Task Test1() { - await Task.Delay(50); + await Task.CompletedTask; } } \ No newline at end of file diff --git a/tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs b/tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs index 47148db5c1..56b14bc824 100644 --- a/tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs +++ b/tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs @@ -21,6 +21,6 @@ public static void Teardown() [Test, Repeat(1_000)] public async Task Test1() { - await Task.Delay(50); + await Task.CompletedTask; } } \ No newline at end of file diff --git a/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs b/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs index 827f79f108..f679d137f7 100644 --- a/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs +++ b/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs @@ -9,7 +9,7 @@ public Tests(Timer timer) [Theory, MemberData(nameof(Repeat))] public async Task Test1(object _) { - await Task.Delay(50); + await Task.CompletedTask; } public static IEnumerable Repeat() From f471e67e06a91793da5d8b9fd41ad61931ecf2b7 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Mon, 2 Sep 2024 00:03:12 +0100 Subject: [PATCH 03/15] Fix --- tools/Directory.Build.props | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 tools/Directory.Build.props 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 From eec0d1e69a5974e6c72a267550aea6e99bb549b3 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Mon, 2 Sep 2024 00:07:45 +0100 Subject: [PATCH 04/15] Tweak --- .../Tests.Benchmark/Benchmarks.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs b/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs index 979443d35e..330f8bb4a2 100644 --- a/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs +++ b/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs @@ -5,12 +5,20 @@ [MarkdownExporterAttribute.GitHub] public class Benchmarks { + private static string GetProjectPath(string name) => + Path.Combine(Environment.CurrentDirectory, "..", "..", "..", "..", name); + + 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") { - WorkingDirectory = "../../../../TUnitTimer", + WorkingDirectory = TUnitPath, })!.WaitForExitAsync(); } @@ -19,7 +27,7 @@ public async Task NUnit() { await Process.Start(new ProcessStartInfo("dotnet", "test") { - WorkingDirectory = "../../../../NUnitTimer", + WorkingDirectory = NUnitPath, })!.WaitForExitAsync(); } @@ -28,7 +36,7 @@ public async Task xUnit() { await Process.Start(new ProcessStartInfo("dotnet", "test") { - WorkingDirectory = "../../../../xUnitTimer", + WorkingDirectory = xUnitPath, })!.WaitForExitAsync(); } @@ -37,7 +45,7 @@ public async Task MSTest() { await Process.Start(new ProcessStartInfo("dotnet", "test") { - WorkingDirectory = "../../../../MSTestTimer", + WorkingDirectory = MSTestPath, })!.WaitForExitAsync(); } } \ No newline at end of file From 95480d161a6ae27f07ad217b97c66f8a9a0706a8 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Mon, 2 Sep 2024 00:11:55 +0100 Subject: [PATCH 05/15] GetProjectPath --- .../Tests.Benchmark/Benchmarks.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs b/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs index 330f8bb4a2..0bc6d6e2ce 100644 --- a/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs +++ b/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs @@ -5,9 +5,6 @@ [MarkdownExporterAttribute.GitHub] public class Benchmarks { - private static string GetProjectPath(string name) => - Path.Combine(Environment.CurrentDirectory, "..", "..", "..", "..", name); - private static string TUnitPath = GetProjectPath("TUnitTimer"); private static string NUnitPath = GetProjectPath("NUnitTimer"); private static string xUnitPath = GetProjectPath("xUnitTimer"); @@ -48,4 +45,16 @@ await Process.Start(new ProcessStartInfo("dotnet", "test") 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); + } } \ No newline at end of file From 6a7c98fe9ef491c07777dbb42d04aad4140a03d5 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Mon, 2 Sep 2024 00:15:50 +0100 Subject: [PATCH 06/15] Update --- Directory.Packages.props | 2 +- tools/speed-comparison/TUnitTimer/TUnitTimer/TUnitTimer.csproj | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 782be50db9..9182aafa28 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -33,7 +33,7 @@ - + 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 From ab1f2401f86dd19c5be6147b21e0bc043fcc470a Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Mon, 2 Sep 2024 00:16:53 +0100 Subject: [PATCH 07/15] Fix --- tools/speed-comparison/Tests.Benchmark/Benchmarks.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs b/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs index 0bc6d6e2ce..2f364a396e 100644 --- a/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs +++ b/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs @@ -55,6 +55,6 @@ private static string GetProjectPath(string name) folder = folder.Parent!; } - return Path.Combine(folder.FullName, name); + return Path.Combine(folder.FullName, name, name); } } \ No newline at end of file From 45a792b846facc859f13a8b3b088afb14488c35e Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Mon, 2 Sep 2024 00:18:45 +0100 Subject: [PATCH 08/15] Update libs --- Directory.Packages.props | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 9182aafa28..89854273f3 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -26,9 +26,9 @@ - - - + + + From fde1bb6775f67ddd3c354e0eecf2068848139081 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Mon, 2 Sep 2024 00:19:30 +0100 Subject: [PATCH 09/15] Remove redundant pipeline proj --- .../.idea/.gitignore | 13 -------- .../.idea/encodings.xml | 4 --- .../.idea/material_theme_project_new.xml | 13 -------- .../TUnit.SpeedComparison.Pipeline.sln | 16 ---------- .../FindProjectsModule.cs | 31 ------------------- .../MSTestModule.cs | 28 ----------------- .../NUnitModule.cs | 28 ----------------- .../TUnit.SpeedComparison.Pipeline/Program.cs | 10 ------ .../ProjectPaths.cs | 11 ------- .../TUnit.SpeedComparison.Pipeline.csproj | 13 -------- .../TUnitModule.cs | 29 ----------------- .../xUnitModule.cs | 28 ----------------- 12 files changed, 224 deletions(-) delete mode 100644 tools/speed-comparison/TUnit.SpeedComparison.Pipeline/.idea/.idea.TUnit.SpeedComparison.Pipeline/.idea/.gitignore delete mode 100644 tools/speed-comparison/TUnit.SpeedComparison.Pipeline/.idea/.idea.TUnit.SpeedComparison.Pipeline/.idea/encodings.xml delete mode 100644 tools/speed-comparison/TUnit.SpeedComparison.Pipeline/.idea/.idea.TUnit.SpeedComparison.Pipeline/.idea/material_theme_project_new.xml delete mode 100644 tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline.sln delete mode 100644 tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/FindProjectsModule.cs delete mode 100644 tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/MSTestModule.cs delete mode 100644 tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/NUnitModule.cs delete mode 100644 tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/Program.cs delete mode 100644 tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/ProjectPaths.cs delete mode 100644 tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline.csproj delete mode 100644 tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/TUnitModule.cs delete mode 100644 tools/speed-comparison/TUnit.SpeedComparison.Pipeline/TUnit.SpeedComparison.Pipeline/xUnitModule.cs 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 From 215858a085c087efc627707cbdde216d8d95111d Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Mon, 2 Sep 2024 00:26:11 +0100 Subject: [PATCH 10/15] Simplify --- .../MSTestTimer/MSTestTimer/Tests.cs | 21 ++----------------- .../NUnitTimer/NUnitTimer/Tests.cs | 20 ++---------------- .../TUnitTimer/TUnitTimer/Tests.cs | 20 ++---------------- .../xUnitTimer/xUnitTimer/Tests.cs | 11 ++-------- .../xUnitTimer/xUnitTimer/Timer.cs | 13 ------------ 5 files changed, 8 insertions(+), 77 deletions(-) delete mode 100644 tools/speed-comparison/xUnitTimer/xUnitTimer/Timer.cs diff --git a/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs b/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs index 6be2ad5f00..e81dc8b9fb 100644 --- a/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs +++ b/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs @@ -5,32 +5,15 @@ 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 _) { - await Task.CompletedTask; + await Task.Delay(50); } public static IEnumerable Repeat() { - foreach (var i in Enumerable.Range(0, 1001)) - { - yield return [i]; - } + return Enumerable.Range(0, 10).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 10736f851e..3f05a065ed 100644 --- a/tools/speed-comparison/NUnitTimer/NUnitTimer/Tests.cs +++ b/tools/speed-comparison/NUnitTimer/NUnitTimer/Tests.cs @@ -1,27 +1,11 @@ -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(10)] public async Task Test1() { - await Task.CompletedTask; + await Task.Delay(50); } } \ No newline at end of file diff --git a/tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs b/tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs index 56b14bc824..ce4282f3f4 100644 --- a/tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs +++ b/tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs @@ -1,26 +1,10 @@ -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(9)] public async Task Test1() { - await Task.CompletedTask; + await Task.Delay(50); } } \ No newline at end of file diff --git a/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs b/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs index f679d137f7..88385ee177 100644 --- a/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs +++ b/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs @@ -2,21 +2,14 @@ namespace xUnitTimer; public class Tests : IClassFixture { - public Tests(Timer timer) - { - } - [Theory, MemberData(nameof(Repeat))] public async Task Test1(object _) { - await Task.CompletedTask; + await Task.Delay(50); } public static IEnumerable Repeat() { - foreach (var i in Enumerable.Range(0, 1001)) - { - yield return [i]; - } + return Enumerable.Range(0, 10).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 From 0d439b3a740fcc37124b2454a06ddd2958eca8f0 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Mon, 2 Sep 2024 00:26:26 +0100 Subject: [PATCH 11/15] Tidy usings --- tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs b/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs index e81dc8b9fb..4b04921e9e 100644 --- a/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs +++ b/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs @@ -1,5 +1,3 @@ -using System.Diagnostics; - namespace MSTestTimer; [TestClass] From d5cfa593675ff067c5fc638aaae6da141efdf1be Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Mon, 2 Sep 2024 00:27:48 +0100 Subject: [PATCH 12/15] --no-build --- tools/speed-comparison/Tests.Benchmark/Benchmarks.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs b/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs index 2f364a396e..b6a1c1fbe3 100644 --- a/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs +++ b/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs @@ -13,7 +13,7 @@ public class Benchmarks [Benchmark] public async Task TUnit() { - await Process.Start(new ProcessStartInfo("dotnet", "run") + await Process.Start(new ProcessStartInfo("dotnet", "run --no-build") { WorkingDirectory = TUnitPath, })!.WaitForExitAsync(); @@ -22,7 +22,7 @@ await Process.Start(new ProcessStartInfo("dotnet", "run") [Benchmark] public async Task NUnit() { - await Process.Start(new ProcessStartInfo("dotnet", "test") + await Process.Start(new ProcessStartInfo("dotnet", "test --no-build") { WorkingDirectory = NUnitPath, })!.WaitForExitAsync(); @@ -31,7 +31,7 @@ await Process.Start(new ProcessStartInfo("dotnet", "test") [Benchmark] public async Task xUnit() { - await Process.Start(new ProcessStartInfo("dotnet", "test") + await Process.Start(new ProcessStartInfo("dotnet", "test --no-build") { WorkingDirectory = xUnitPath, })!.WaitForExitAsync(); @@ -40,7 +40,7 @@ await Process.Start(new ProcessStartInfo("dotnet", "test") [Benchmark] public async Task MSTest() { - await Process.Start(new ProcessStartInfo("dotnet", "test") + await Process.Start(new ProcessStartInfo("dotnet", "test --no-build") { WorkingDirectory = MSTestPath, })!.WaitForExitAsync(); From c59edbe8f6e23eaed3ddbaef7d4f08773c63f462 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Mon, 2 Sep 2024 00:28:14 +0100 Subject: [PATCH 13/15] -c Release --- tools/speed-comparison/Tests.Benchmark/Benchmarks.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs b/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs index b6a1c1fbe3..2849afbae9 100644 --- a/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs +++ b/tools/speed-comparison/Tests.Benchmark/Benchmarks.cs @@ -13,7 +13,7 @@ public class Benchmarks [Benchmark] public async Task TUnit() { - await Process.Start(new ProcessStartInfo("dotnet", "run --no-build") + await Process.Start(new ProcessStartInfo("dotnet", "run --no-build -c Release") { WorkingDirectory = TUnitPath, })!.WaitForExitAsync(); @@ -22,7 +22,7 @@ await Process.Start(new ProcessStartInfo("dotnet", "run --no-build") [Benchmark] public async Task NUnit() { - await Process.Start(new ProcessStartInfo("dotnet", "test --no-build") + await Process.Start(new ProcessStartInfo("dotnet", "test --no-build -c Release") { WorkingDirectory = NUnitPath, })!.WaitForExitAsync(); @@ -31,7 +31,7 @@ await Process.Start(new ProcessStartInfo("dotnet", "test --no-build") [Benchmark] public async Task xUnit() { - await Process.Start(new ProcessStartInfo("dotnet", "test --no-build") + await Process.Start(new ProcessStartInfo("dotnet", "test --no-build -c Release") { WorkingDirectory = xUnitPath, })!.WaitForExitAsync(); @@ -40,7 +40,7 @@ await Process.Start(new ProcessStartInfo("dotnet", "test --no-build") [Benchmark] public async Task MSTest() { - await Process.Start(new ProcessStartInfo("dotnet", "test --no-build") + await Process.Start(new ProcessStartInfo("dotnet", "test --no-build -c Release") { WorkingDirectory = MSTestPath, })!.WaitForExitAsync(); From 1c58f0900773d006acd6d805a424273126174a1c Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Mon, 2 Sep 2024 00:33:10 +0100 Subject: [PATCH 14/15] Fix --- tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs b/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs index 88385ee177..19a7c817c3 100644 --- a/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs +++ b/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs @@ -1,6 +1,6 @@ namespace xUnitTimer; -public class Tests : IClassFixture +public class Tests { [Theory, MemberData(nameof(Repeat))] public async Task Test1(object _) From 13e9741c4f437f5b6e048f946c47e5f034bb607f Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Mon, 2 Sep 2024 00:34:11 +0100 Subject: [PATCH 15/15] 100 --- tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs | 2 +- tools/speed-comparison/NUnitTimer/NUnitTimer/Tests.cs | 2 +- tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs | 2 +- tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs b/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs index 4b04921e9e..55b508d3f4 100644 --- a/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs +++ b/tools/speed-comparison/MSTestTimer/MSTestTimer/Tests.cs @@ -12,6 +12,6 @@ public async Task TestMethod1(int _) public static IEnumerable Repeat() { - return Enumerable.Range(0, 10).Select(i => (object[])[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 3f05a065ed..181cc22e9a 100644 --- a/tools/speed-comparison/NUnitTimer/NUnitTimer/Tests.cs +++ b/tools/speed-comparison/NUnitTimer/NUnitTimer/Tests.cs @@ -3,7 +3,7 @@ namespace NUnitTimer; [Parallelizable(ParallelScope.All)] public class Tests { - [Test, Repeat(10)] + [Test, Repeat(100)] public async Task Test1() { await Task.Delay(50); diff --git a/tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs b/tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs index ce4282f3f4..cc859bf843 100644 --- a/tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs +++ b/tools/speed-comparison/TUnitTimer/TUnitTimer/Tests.cs @@ -2,7 +2,7 @@ namespace TUnitTimer; public class Tests { - [Test, Repeat(9)] + [Test, Repeat(99)] public async Task Test1() { await Task.Delay(50); diff --git a/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs b/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs index 19a7c817c3..0daed1da14 100644 --- a/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs +++ b/tools/speed-comparison/xUnitTimer/xUnitTimer/Tests.cs @@ -10,6 +10,6 @@ public async Task Test1(object _) public static IEnumerable Repeat() { - return Enumerable.Range(0, 10).Select(i => (object[])[i]); + return Enumerable.Range(0, 100).Select(i => (object[])[i]); } } \ No newline at end of file