diff --git a/TUnit.SourceGenerator.Benchmarks/AotConverterGeneratorBenchmarks.cs b/TUnit.SourceGenerator.Benchmarks/AotConverterGeneratorBenchmarks.cs new file mode 100644 index 0000000000..7b53b6d133 --- /dev/null +++ b/TUnit.SourceGenerator.Benchmarks/AotConverterGeneratorBenchmarks.cs @@ -0,0 +1,33 @@ +using BenchmarkDotNet.Attributes; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.MSBuild; +using TUnit.Core.SourceGenerator.Generators; + +namespace TUnit.SourceGenerator.Benchmarks; + +[MemoryDiagnoser] +[InProcess] +public class AotConverterGeneratorBenchmarks +{ + private const string SampleProjectPath = "../TUnit.TestProject/TUnit.TestProject.csproj"; + + private MSBuildWorkspace? _workspace; + private GeneratorDriver? _sampleDriver; + private Compilation? _sampleCompilation; + + [GlobalSetup(Target = nameof(RunGenerator))] + public void SetupRunGenerator() => + (_sampleCompilation, _sampleDriver, _workspace) = + WorkspaceHelper.SetupAsync(SampleProjectPath) + .GetAwaiter() + .GetResult(); + + [Benchmark] + public GeneratorDriver RunGenerator() => _sampleDriver!.RunGeneratorsAndUpdateCompilation(_sampleCompilation!, out _, out _); + + [GlobalCleanup] + public void Cleanup() + { + _workspace?.Dispose(); + } +} diff --git a/TUnit.SourceGenerator.Benchmarks/Program.cs b/TUnit.SourceGenerator.Benchmarks/Program.cs index 4e4b4ab3cb..430f60738e 100644 --- a/TUnit.SourceGenerator.Benchmarks/Program.cs +++ b/TUnit.SourceGenerator.Benchmarks/Program.cs @@ -11,4 +11,5 @@ else { BenchmarkRunner.Run(); + // BenchmarkRunner.Run(); } diff --git a/TUnit.SourceGenerator.Benchmarks/TestMetadataGeneratorBenchmarks.cs b/TUnit.SourceGenerator.Benchmarks/TestMetadataGeneratorBenchmarks.cs index 7c1ce60261..17430eaa0e 100644 --- a/TUnit.SourceGenerator.Benchmarks/TestMetadataGeneratorBenchmarks.cs +++ b/TUnit.SourceGenerator.Benchmarks/TestMetadataGeneratorBenchmarks.cs @@ -16,15 +16,15 @@ public class TestMetadataGeneratorBenchmarks private GeneratorDriver? _sampleDriver; private Compilation? _sampleCompilation; - [GlobalSetup(Target = nameof(Compile))] - public void SetupCompile() => + [GlobalSetup(Target = nameof(RunGenerator))] + public void SetupRunGenerator() => (_sampleCompilation, _sampleDriver, _workspace) = WorkspaceHelper.SetupAsync(SampleProjectPath) .GetAwaiter() .GetResult(); [Benchmark] - public GeneratorDriver Compile() => _sampleDriver!.RunGeneratorsAndUpdateCompilation(_sampleCompilation!, out _, out _); + public GeneratorDriver RunGenerator() => _sampleDriver!.RunGeneratorsAndUpdateCompilation(_sampleCompilation!, out _, out _); [GlobalCleanup] public void Cleanup()