Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions src/Benchmark/Benchmark.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,10 @@
</Compile>
</ItemGroup>
<ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="0.14.0" />
<PackageReference Include="BenchmarkDotNet" Version="0.15.8" />
<PackageReference Include="ExpressionDebugger" Version="2.2.1" />
<PackageReference Include="ExpressionTranslator" Version="2.5.0" />
<PackageReference Include="AutoMapper" Version="13.0.1" />
<PackageReference Include="FastExpressionCompiler" Version="5.0.0" />
<PackageReference Include="FastExpressionCompiler" Version="5.3.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ExpressionDebugger\ExpressionDebugger.csproj" />
Expand Down
38 changes: 19 additions & 19 deletions src/Benchmark/Benchmarks/TestAll.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,47 +11,47 @@ public class TestAll
[Params(100_000)]//, 1_000_000)]
public int Iterations { get; set; }

[Benchmark(Description = "Mapster 7.2.0")]
[Benchmark(Description = $"Mapster {TestAdaptHelper.MapsterVersion}")]
public void MapsterTest()
{
TestAdaptHelper.TestMapsterAdapter<Foo, Foo>(_fooInstance, Iterations);
TestAdaptHelper.TestMapsterAdapter<Customer, CustomerDTO>(_customerInstance, Iterations);
}

[Benchmark(Description = "Mapster 7.2.0 (Roslyn)")]
[Benchmark(Description = $"Mapster {TestAdaptHelper.MapsterVersion} (Roslyn)")]
public void RoslynTest()
{
TestAdaptHelper.TestMapsterAdapter<Foo, Foo>(_fooInstance, Iterations);
TestAdaptHelper.TestMapsterAdapter<Customer, CustomerDTO>(_customerInstance, Iterations);
}

[Benchmark(Description = "Mapster 7.2.0 (FEC)")]
[Benchmark(Description = $"Mapster {TestAdaptHelper.MapsterVersion} (FEC)")]
public void FecTest()
{
TestAdaptHelper.TestMapsterAdapter<Foo, Foo>(_fooInstance, Iterations);
TestAdaptHelper.TestMapsterAdapter<Customer, CustomerDTO>(_customerInstance, Iterations);
}

[Benchmark(Description = "Mapster 7.2.0 (Codegen)")]
[Benchmark(Description = $"Mapster {TestAdaptHelper.MapsterVersion} (Codegen)")]
public void CodegenTest()
{
TestAdaptHelper.TestCodeGen(_fooInstance, Iterations);
TestAdaptHelper.TestCodeGen(_customerInstance, Iterations);
}

[Benchmark(Description = "ExpressMapper 1.9.1")]
[Benchmark(Description = $"ExpressMapper {TestAdaptHelper.ExpressionMapperVersion}")]
public void ExpressMapperTest()
{
TestAdaptHelper.TestExpressMapper<Foo, Foo>(_fooInstance, Iterations);
TestAdaptHelper.TestExpressMapper<Customer, CustomerDTO>(_customerInstance, Iterations);
}

[Benchmark(Description = "AutoMapper 10.1.1")]
public void AutoMapperTest()
{
TestAdaptHelper.TestAutoMapper<Foo, Foo>(_fooInstance, Iterations);
TestAdaptHelper.TestAutoMapper<Customer, CustomerDTO>(_customerInstance, Iterations);
}
//[Benchmark(Description = $"AutoMapper {TestAdaptHelper.AutoMapperVersion}")]
//public void AutoMapperTest()
//{
// TestAdaptHelper.TestAutoMapper<Foo, Foo>(_fooInstance, Iterations);
// TestAdaptHelper.TestAutoMapper<Customer, CustomerDTO>(_customerInstance, Iterations);
//}

[GlobalSetup(Target = nameof(MapsterTest))]
public void SetupMapster()
Expand Down Expand Up @@ -98,14 +98,14 @@ public void SetupExpressMapper()
TestAdaptHelper.ConfigureExpressMapper(_customerInstance);
}

[GlobalSetup(Target = nameof(AutoMapperTest))]
public void SetupAutoMapper()
{
_fooInstance = TestAdaptHelper.SetupFooInstance();
_customerInstance = TestAdaptHelper.SetupCustomerInstance();
TestAdaptHelper.ConfigureAutoMapper(_fooInstance);
TestAdaptHelper.ConfigureAutoMapper(_customerInstance);
}
//[GlobalSetup(Target = nameof(AutoMapperTest))]
//public void SetupAutoMapper()
//{
// _fooInstance = TestAdaptHelper.SetupFooInstance();
// _customerInstance = TestAdaptHelper.SetupCustomerInstance();
// TestAdaptHelper.ConfigureAutoMapper(_fooInstance);
// TestAdaptHelper.ConfigureAutoMapper(_customerInstance);
//}

}
}
26 changes: 13 additions & 13 deletions src/Benchmark/Benchmarks/TestComplexTypes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ public void MapsterTest()
TestAdaptHelper.TestMapsterAdapter<Customer, CustomerDTO>(_customerInstance, Iterations);
}

[Benchmark(Description = "Mapster 6.0.0 (Roslyn)")]
[Benchmark(Description = $"Mapster {TestAdaptHelper.MapsterVersion} (Roslyn)")]
public void RoslynTest()
{
TestAdaptHelper.TestMapsterAdapter<Customer, CustomerDTO>(_customerInstance, Iterations);
}

[Benchmark(Description = "Mapster 6.0.0 (FEC)")]
[Benchmark(Description = $"Mapster {TestAdaptHelper.MapsterVersion} (FEC)")]
public void FecTest()
{
TestAdaptHelper.TestMapsterAdapter<Customer, CustomerDTO>(_customerInstance, Iterations);
Expand All @@ -40,11 +40,11 @@ public void ExpressMapperTest()
TestAdaptHelper.TestExpressMapper<Customer, CustomerDTO>(_customerInstance, Iterations);
}

[Benchmark]
public void AutoMapperTest()
{
TestAdaptHelper.TestAutoMapper<Customer, CustomerDTO>(_customerInstance, Iterations);
}
//[Benchmark]
//public void AutoMapperTest()
//{
// TestAdaptHelper.TestAutoMapper<Customer, CustomerDTO>(_customerInstance, Iterations);
//}

[GlobalSetup(Target = nameof(MapsterTest))]
public void SetupMapster()
Expand Down Expand Up @@ -81,11 +81,11 @@ public void SetupExpressMapper()
TestAdaptHelper.ConfigureExpressMapper(_customerInstance);
}

[GlobalSetup(Target = nameof(AutoMapperTest))]
public void SetupAutoMapper()
{
_customerInstance = TestAdaptHelper.SetupCustomerInstance();
TestAdaptHelper.ConfigureAutoMapper(_customerInstance);
}
//[GlobalSetup(Target = nameof(AutoMapperTest))]
//public void SetupAutoMapper()
//{
// _customerInstance = TestAdaptHelper.SetupCustomerInstance();
// TestAdaptHelper.ConfigureAutoMapper(_customerInstance);
//}
}
}
26 changes: 13 additions & 13 deletions src/Benchmark/Benchmarks/TestSimpleTypes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ public void MapsterTest()
TestAdaptHelper.TestMapsterAdapter<Foo, Foo>(_fooInstance, Iterations);
}

[Benchmark(Description = "Mapster 6.0.0 (Roslyn)")]
[Benchmark(Description = $"Mapster {TestAdaptHelper.MapsterVersion} (Roslyn)")]
public void RoslynTest()
{
TestAdaptHelper.TestMapsterAdapter<Foo, Foo>(_fooInstance, Iterations);
}

[Benchmark(Description = "Mapster 6.0.0 (FEC)")]
[Benchmark(Description = $"Mapster {TestAdaptHelper.MapsterVersion} (FEC)")]
public void FecTest()
{
TestAdaptHelper.TestMapsterAdapter<Foo, Foo>(_fooInstance, Iterations);
Expand All @@ -40,11 +40,11 @@ public void ExpressMapperTest()
TestAdaptHelper.TestExpressMapper<Foo, Foo>(_fooInstance, Iterations);
}

[Benchmark]
public void AutoMapperTest()
{
TestAdaptHelper.TestAutoMapper<Foo, Foo>(_fooInstance, Iterations);
}
//[Benchmark]
//public void AutoMapperTest()
//{
// TestAdaptHelper.TestAutoMapper<Foo, Foo>(_fooInstance, Iterations);
//}


[GlobalSetup(Target = nameof(MapsterTest))]
Expand Down Expand Up @@ -82,11 +82,11 @@ public void SetupExpressMapper()
TestAdaptHelper.ConfigureExpressMapper(_fooInstance);
}

[GlobalSetup(Target = nameof(AutoMapperTest))]
public void SetupAutoMapper()
{
_fooInstance = TestAdaptHelper.SetupFooInstance();
TestAdaptHelper.ConfigureAutoMapper(_fooInstance);
}
//[GlobalSetup(Target = nameof(AutoMapperTest))]
//public void SetupAutoMapper()
//{
// _fooInstance = TestAdaptHelper.SetupFooInstance();
// TestAdaptHelper.ConfigureAutoMapper(_fooInstance);
//}
}
}
56 changes: 30 additions & 26 deletions src/Benchmark/TestAdaptHelper.cs
Original file line number Diff line number Diff line change
@@ -1,22 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using AutoMapper;
using Benchmark.Classes;
using Benchmark.Classes;
using FastExpressionCompiler;
using Mapster;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;

namespace Benchmark
{
public static class TestAdaptHelper
{
private static readonly IMapper _mapper = new Mapper(new MapperConfiguration(cfg =>
{
cfg.CreateMap<Foo, Foo>();
cfg.CreateMap<Address, Address>();
cfg.CreateMap<Address, AddressDTO>();
cfg.CreateMap<Customer, CustomerDTO>();
}));
//private static readonly IMapper _mapper = new Mapper(new MapperConfiguration(cfg =>
//{
// cfg.CreateMap<Foo, Foo>();
// cfg.CreateMap<Address, Address>();
// cfg.CreateMap<Address, AddressDTO>();
// cfg.CreateMap<Customer, CustomerDTO>();
//}));

public const string MapsterVersion = "10.0.0";
public const string AutoMapperVersion = "13.0.0";
public const string ExpressionTranslatorVersion = "2.5.0";
public const string ExpressionMapperVersion = "1.9.1";

public static Customer SetupCustomerInstance()
{
Expand Down Expand Up @@ -90,10 +94,10 @@ public static void ConfigureExpressMapper(Foo fooInstance)
{
//ExpressMapper.Mapper.Map<Foo, Foo>(fooInstance); //exercise
}
public static void ConfigureAutoMapper(Foo fooInstance)
{
_mapper.Map<Foo, Foo>(fooInstance); //exercise
}
//public static void ConfigureAutoMapper(Foo fooInstance)
//{
// _mapper.Map<Foo, Foo>(fooInstance); //exercise
//}

public static void ConfigureMapster(Customer customerInstance, MapsterCompilerType type)
{
Expand All @@ -105,10 +109,10 @@ public static void ConfigureExpressMapper(Customer customerInstance)
{
//ExpressMapper.Mapper.Map<Customer, CustomerDTO>(customerInstance); //exercise
}
public static void ConfigureAutoMapper(Customer customerInstance)
{
_mapper.Map<Customer, CustomerDTO>(customerInstance); //exercise
}
//public static void ConfigureAutoMapper(Customer customerInstance)
//{
// _mapper.Map<Customer, CustomerDTO>(customerInstance); //exercise
//}

public static void TestMapsterAdapter<TSrc, TDest>(TSrc item, int iterations)
where TSrc : class
Expand All @@ -124,12 +128,12 @@ public static void TestExpressMapper<TSrc, TDest>(TSrc item, int iterations)
//Loop(item, get => ExpressMapper.Mapper.Map<TSrc, TDest>(get), iterations);
}

public static void TestAutoMapper<TSrc, TDest>(TSrc item, int iterations)
where TSrc : class
where TDest : class, new()
{
Loop(item, get => _mapper.Map<TSrc, TDest>(get), iterations);
}
//public static void TestAutoMapper<TSrc, TDest>(TSrc item, int iterations)
// where TSrc : class
// where TDest : class, new()
//{
// Loop(item, get => _mapper.Map<TSrc, TDest>(get), iterations);
//}

public static void TestCodeGen(Foo item, int iterations)
{
Expand Down
Loading