/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Tools/IdeBenchmarks/InheritanceMargin/InheritanceMarginServiceBenchmarks.cs
66 строк
2 KB
Jason Malinowski
Remove unnecessary uses of Microsoft.Build.Locator
14 ноя 2023, 04:50
14 ноя 2023, 04:50
ca2a7db
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System; using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; using BenchmarkDotNet.Attributes; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Editor.UnitTests; using Microsoft.CodeAnalysis.Host.Mef; using Microsoft.CodeAnalysis.MSBuild; using Microsoft.CodeAnalysis.Test.Utilities; namespace IdeBenchmarks.InheritanceMargin { [MemoryDiagnoser] public class InheritanceMarginServiceBenchmarks { private readonly UseExportProviderAttribute _useExportProviderAttribute = new(); private Solution _solution; public InheritanceMarginServiceBenchmarks() { _solution = null!; } [IterationSetup] public void IterationSetup() { _useExportProviderAttribute.Before(null); var roslynRoot = Environment.GetEnvironmentVariable(Program.RoslynRootPathEnvVariableName); var solutionPath = Path.Combine(roslynRoot, @"src\Tools\IdeCoreBenchmarks\Assets\Microsoft.CodeAnalysis.sln"); if (!File.Exists(solutionPath)) throw new ArgumentException("Couldn't find solution."); Console.WriteLine("Found solution."); var assemblies = MSBuildMefHostServices.DefaultAssemblies .AddRange(EditorTestCompositions.EditorFeatures.Assemblies) .Distinct(); var hostService = MefHostServices.Create(assemblies); var workspace = MSBuildWorkspace.Create(hostService); _solution = workspace.OpenSolutionAsync(solutionPath).Result; } [IterationCleanup] public void IterationCleanup() { _useExportProviderAttribute.After(null); } [Benchmark] public async Task BenchmarkInheritanceMarginServiceAsync() { var items = await BenchmarksHelpers.GenerateInheritanceMarginItemsAsync( _solution, CancellationToken.None).ConfigureAwait(false); Console.WriteLine($"Total {items.Length} items are generated."); } } }