Added basic adapters and couple of tests for v4.0.1, v5.X and v6.0.0 Unity
This commit is contained in:
Родитель
c730a218c8
Коммит
afa52126aa
|
@ -23,6 +23,7 @@ bld/
|
|||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Ll]og/
|
||||
lib/
|
||||
|
||||
# Visual Studio 2015 cache/options directory
|
||||
.vs/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<TargetFramework>net47</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -2,8 +2,23 @@
|
|||
|
||||
namespace Benchmark.Abstractions
|
||||
{
|
||||
public abstract class UnityAdapterBase
|
||||
public interface IUnityAdapter
|
||||
{
|
||||
public abstract void CreateContainer();
|
||||
void NewUnityContainer();
|
||||
|
||||
void UsingUnityContainer();
|
||||
}
|
||||
|
||||
public abstract class UnityAdapterBase<T> : IUnityAdapter where T : IDisposable
|
||||
{
|
||||
protected abstract T CreateContainer();
|
||||
|
||||
public virtual void NewUnityContainer() { T container = CreateContainer(); }
|
||||
|
||||
public virtual void UsingUnityContainer() { using (T container = CreateContainer()) { } }
|
||||
|
||||
public virtual void RegisterInstance()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,15 +3,21 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.27004.2009
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Runner", "Runner\Runner.csproj", "{1614A6A2-D722-4CD0-AB17-91E582B3B5FC}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Runner", "Runner\Runner.csproj", "{1614A6A2-D722-4CD0-AB17-91E582B3B5FC}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.V4.Adapter", "Unity.V4.Adapter\Unity.V4.Adapter.csproj", "{3DB49868-C3F8-4411-B60C-E25F6F00F42C}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.V4.Adapter", "Unity.V4.Adapter\Unity.V4.Adapter.csproj", "{3DB49868-C3F8-4411-B60C-E25F6F00F42C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.V5.Adapter", "Unity.V5.Adapter\Unity.V5.Adapter.csproj", "{2EBCEBCB-6611-4C61-B829-85E0359DF880}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.V5.Adapter", "Unity.V5.Adapter\Unity.V5.Adapter.csproj", "{2EBCEBCB-6611-4C61-B829-85E0359DF880}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.V6.Adapter", "Unity.V6.Adapter\Unity.V6.Adapter.csproj", "{68552D99-2256-4AC6-BFD6-A40A18211819}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.V6.Adapter", "Unity.V6.Adapter\Unity.V6.Adapter.csproj", "{68552D99-2256-4AC6-BFD6-A40A18211819}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Benchmark.Abstractions", "Benchmark.Abstractions\Benchmark.Abstractions.csproj", "{78880FC1-D5BF-4A59-901D-5EBB702CCC93}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Benchmark.Abstractions", "Benchmark.Abstractions\Benchmark.Abstractions.csproj", "{78880FC1-D5BF-4A59-901D-5EBB702CCC93}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.Abstractions", "Latest\Abstractions\src\Unity.Abstractions.csproj", "{076E9180-7259-4B83-BC40-F32A2D2CDBA3}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Latest", "Latest", "{8FFE04F3-1771-43C5-96A8-EED028C64A73}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.Container", "Latest\Container\src\Unity.Container.csproj", "{8EFE66F5-D5D6-4933-8B5E-1DCF31F2BDC5}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
|
@ -39,10 +45,22 @@ Global
|
|||
{78880FC1-D5BF-4A59-901D-5EBB702CCC93}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{78880FC1-D5BF-4A59-901D-5EBB702CCC93}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{78880FC1-D5BF-4A59-901D-5EBB702CCC93}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{076E9180-7259-4B83-BC40-F32A2D2CDBA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{076E9180-7259-4B83-BC40-F32A2D2CDBA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{076E9180-7259-4B83-BC40-F32A2D2CDBA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{076E9180-7259-4B83-BC40-F32A2D2CDBA3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{8EFE66F5-D5D6-4933-8B5E-1DCF31F2BDC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{8EFE66F5-D5D6-4933-8B5E-1DCF31F2BDC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{8EFE66F5-D5D6-4933-8B5E-1DCF31F2BDC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8EFE66F5-D5D6-4933-8B5E-1DCF31F2BDC5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{076E9180-7259-4B83-BC40-F32A2D2CDBA3} = {8FFE04F3-1771-43C5-96A8-EED028C64A73}
|
||||
{8EFE66F5-D5D6-4933-8B5E-1DCF31F2BDC5} = {8FFE04F3-1771-43C5-96A8-EED028C64A73}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {F12FC46A-FED6-408A-B7E4-EE6255667778}
|
||||
EndGlobalSection
|
||||
|
|
|
@ -1,13 +1,16 @@
|
|||
using System;
|
||||
using BenchmarkDotNet.Running;
|
||||
using BenchmarkDotNet.Running;
|
||||
using Runner.Tests;
|
||||
|
||||
namespace Runner
|
||||
{
|
||||
class Program
|
||||
public class Program
|
||||
{
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
var summary = BenchmarkRunner.Run<CreateContainer>();
|
||||
//BenchmarkSwitcher.FromAssembly(typeof(Program).GetTypeInfo().Assembly).Run(args);
|
||||
|
||||
var summary = BenchmarkRunner.Run<UnityContainerBenchmarks>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,18 +2,22 @@
|
|||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net461</TargetFramework>
|
||||
<TargetFramework>net47</TargetFramework>
|
||||
<OutDir>$(SolutionDir)bin\Runner</OutDir>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="BenchmarkDotNet.Artifacts\**" />
|
||||
<EmbeddedResource Remove="BenchmarkDotNet.Artifacts\**" />
|
||||
<None Remove="BenchmarkDotNet.Artifacts\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.10.10" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Benchmark.Abstractions\Benchmark.Abstractions.csproj" />
|
||||
<ProjectReference Include="..\Unity.V4.Adapter\Unity.V4.Adapter.csproj" />
|
||||
<ProjectReference Include="..\Unity.V5.Adapter\Unity.V5.Adapter.csproj" />
|
||||
<ProjectReference Include="..\Unity.V6.Adapter\Unity.V6.Adapter.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
using System;
|
||||
using System.Reflection;
|
||||
using Benchmark.Abstractions;
|
||||
using BenchmarkDotNet.Attributes;
|
||||
|
||||
namespace Runner.Tests
|
||||
{
|
||||
public class TestsBase
|
||||
{
|
||||
[Params("V4", "V5", "V6")]
|
||||
protected string Version;
|
||||
|
||||
protected IUnityAdapter Adapter;
|
||||
|
||||
[GlobalSetup]
|
||||
public void Setup()
|
||||
{
|
||||
var type = Assembly.LoadFrom($"..\\Unity.{Version}.Adapter\\Unity.{Version}.Adapter.dll")
|
||||
.GetType($"Unity.{Version}.Adapter.UnityTestAdapter");
|
||||
|
||||
Adapter = (IUnityAdapter)Activator.CreateInstance(type);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Benchmark.Abstractions;
|
||||
using BenchmarkDotNet.Attributes;
|
||||
using Unity.V4.Adapter;
|
||||
using Unity.V5.Adapter;
|
||||
using Unity.V6.Adapter;
|
||||
|
||||
namespace Runner
|
||||
{
|
||||
public class CreateContainer
|
||||
{
|
||||
private UnityAdapterBase _adapter_v4 = new UnityV4Adapter();
|
||||
private UnityAdapterBase _adapter_v5 = new UnityV5Adapter();
|
||||
private UnityAdapterBase _adapter_v6 = new UnityV6Adapter();
|
||||
|
||||
[Benchmark]
|
||||
public void CreateContainer_v4()
|
||||
{
|
||||
_adapter_v4
|
||||
}
|
||||
|
||||
public void CreateContainer_v5()
|
||||
{
|
||||
}
|
||||
|
||||
public void CreateContainer_v6()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BenchmarkDotNet.Attributes;
|
||||
using BenchmarkDotNet.Configs;
|
||||
using BenchmarkDotNet.Order;
|
||||
using BenchmarkDotNet.Reports;
|
||||
|
||||
namespace Runner.Tests
|
||||
{
|
||||
[Config(typeof(Config))]
|
||||
[BenchmarkCategory("IUnityContainer")]
|
||||
public class UnityContainerBenchmarks : TestsBase
|
||||
{
|
||||
#region Tests
|
||||
|
||||
[Benchmark(Description = "new UnityContainer()")]
|
||||
public void NewUnityContainer() => Adapter.NewUnityContainer();
|
||||
|
||||
[Benchmark(Description = "using(var uc = new UnityContainer()){}")]
|
||||
public void UsingUnityContainer() => Adapter.UsingUnityContainer();
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Config
|
||||
|
||||
private class Config : ManualConfig
|
||||
{
|
||||
public Config()
|
||||
{
|
||||
Set(new NameVersionOrderProvider());
|
||||
}
|
||||
|
||||
private class NameVersionOrderProvider : IOrderProvider
|
||||
{
|
||||
public IEnumerable<BenchmarkDotNet.Running.Benchmark> GetExecutionOrder(BenchmarkDotNet.Running.Benchmark[] benchmarks) =>
|
||||
from benchmark in benchmarks
|
||||
orderby benchmark.Parameters["Version"] descending,
|
||||
benchmark.Target.MethodDisplayInfo
|
||||
select benchmark;
|
||||
|
||||
public IEnumerable<BenchmarkDotNet.Running.Benchmark> GetSummaryOrder(BenchmarkDotNet.Running.Benchmark[] benchmarks, Summary summary) =>
|
||||
benchmarks.OrderBy(benchmark => benchmark.DisplayInfo).ThenBy(benchmark => benchmark.Parameters["Version"]);//.ThenBy(benchmark => summary[benchmark].ResultStatistics.Mean);
|
||||
|
||||
public string GetGroupKey(BenchmarkDotNet.Running.Benchmark benchmark, Summary summary) => null;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -1,10 +1,12 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net461</TargetFramework>
|
||||
<TargetFramework>net47</TargetFramework>
|
||||
<OutDir>$(SolutionDir)bin\Unity.V4.Adapter</OutDir>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.10.10" />
|
||||
<PackageReference Include="Unity" Version="4.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
using System;
|
||||
using Benchmark.Abstractions;
|
||||
using Microsoft.Practices.Unity;
|
||||
|
||||
namespace Unity.V4.Adapter
|
||||
{
|
||||
public class UnityTestAdapter : UnityAdapterBase<UnityContainer>
|
||||
{
|
||||
protected override UnityContainer CreateContainer()
|
||||
{
|
||||
return new UnityContainer();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
using System;
|
||||
using Benchmark.Abstractions;
|
||||
using Microsoft.Practices.Unity;
|
||||
|
||||
namespace Unity.V4.Adapter
|
||||
{
|
||||
public class UnityV4Adapter : UnityAdapterBase
|
||||
{
|
||||
public override void CreateContainer()
|
||||
{
|
||||
var container = new UnityContainer();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,10 +1,13 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<TargetFramework>net47</TargetFramework>
|
||||
<OutDir>$(SolutionDir)bin\Unity.V5.Adapter</OutDir>
|
||||
<RootNamespace>Unity.V5.Adapter</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.10.10" />
|
||||
<PackageReference Include="Unity" Version="5.*" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
using System;
|
||||
using Benchmark.Abstractions;
|
||||
|
||||
namespace Unity.V5.Adapter
|
||||
{
|
||||
public class UnityTestAdapter : UnityAdapterBase<UnityContainer>
|
||||
{
|
||||
protected override UnityContainer CreateContainer()
|
||||
{
|
||||
return new UnityContainer();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
using System;
|
||||
using Benchmark.Abstractions;
|
||||
|
||||
namespace Unity.V5.Adapter
|
||||
{
|
||||
public class UnityV5Adapter : UnityAdapterBase
|
||||
{
|
||||
public override void CreateContainer()
|
||||
{
|
||||
var container = new UnityContainer();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,11 +1,19 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<TargetFramework>net47</TargetFramework>
|
||||
<OutDir>$(SolutionDir)bin\Unity.V6.Adapter</OutDir>
|
||||
<RootNamespace>Unity.V6.Adapter</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.10.10" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Benchmark.Abstractions\Benchmark.Abstractions.csproj" />
|
||||
<ProjectReference Include="..\Latest\Abstractions\src\Unity.Abstractions.csproj" />
|
||||
<ProjectReference Include="..\Latest\Container\src\Unity.Container.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
using Benchmark.Abstractions;
|
||||
|
||||
namespace Unity.V6.Adapter
|
||||
{
|
||||
public class UnityTestAdapter : UnityAdapterBase<UnityContainer>
|
||||
{
|
||||
protected override UnityContainer CreateContainer()
|
||||
{
|
||||
return new UnityContainer();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
using System;
|
||||
using Benchmark.Abstractions;
|
||||
|
||||
namespace Unity.V6.Adapter
|
||||
{
|
||||
public class UnityV6Adapter : UnityAdapterBase
|
||||
{
|
||||
public override void CreateContainer()
|
||||
{
|
||||
var container = new UnityContainer();
|
||||
}
|
||||
}
|
||||
}
|
Загрузка…
Ссылка в новой задаче