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
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
<ProjectGuid>{2B8A4535-7E5C-4DB6-BB86-06AEB4F3DE81}</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>AgileObjects.AgileMapper.PerformanceTester</RootNamespace>
<AssemblyName>AgileObjects.AgileMapper.PerformanceTester</AssemblyName>
<RootNamespace>AgileObjects.AgileMapper.PerformanceTester.Net45</RootNamespace>
<AssemblyName>AgileObjects.AgileMapper.PerformanceTester.Net45</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
Expand Down Expand Up @@ -75,76 +75,15 @@
<Compile Include="..\VersionInfo.cs">
<Link>VersionInfo.cs</Link>
</Compile>
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperInstantiation.cs" />
<Compile Include="AbstractMappers\DeepMapperSetupBase.cs" />
<Compile Include="AbstractMappers\EntityMapperBase.cs" />
<Compile Include="AbstractMappers\EntityMapperSetupBase.cs" />
<Compile Include="AbstractMappers\MapperInstantiationBase.cs" />
<Compile Include="AbstractMappers\MapperSetupTestBase.cs" />
<Compile Include="AbstractMappers\MapperTestBase.cs" />
<Compile Include="AbstractMappers\UnflatteningMapperSetupBase.cs" />
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperEntityMapper.cs" />
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperEntityMapperSetup.cs" />
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperUnflatteningMapperSetup.cs" />
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperComplexTypeMapperSetup.cs" />
<Compile Include="AbstractMappers\ComplexTypeMapperSetupBase.cs" />
<Compile Include="AbstractMappers\UnflatteningMapperBase.cs" />
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperCtorMapper.cs" />
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperComplexTypeMapper.cs" />
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperDeepMapperSetup.cs" />
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperDeepMapper.cs" />
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperUnflatteningMapper.cs" />
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperFlatteningMapper.cs" />
<Compile Include="AbstractMappers\ComplexTypeMapperBase.cs" />
<Compile Include="AbstractMappers\CtorMapperBase.cs" />
<Compile Include="AbstractMappers\DeepMapperBase.cs" />
<Compile Include="AbstractMappers\FlatteningMapperBase.cs" />
<Compile Include="AbstractMappers\IObjectMapperTest.cs" />
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperInstantiation.cs" />
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperEntityMapperSetup.cs" />
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperEntityMapper.cs" />
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperUnflatteningMapperSetup.cs" />
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperDeepMapperSetup.cs" />
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperComplexTypeMapperSetup.cs" />
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperUnflatteningMapper.cs" />
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperCtorMapper.cs" />
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperComplexTypeMapper.cs" />
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperDeepMapper.cs" />
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperFlatteningMapper.cs" />
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperDeepMapperSetup.cs" />
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperComplexTypeMapper.cs" />
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperComplexTypeMapperSetup.cs" />
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperCtorMapper.cs" />
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperComplexTypeMapper.cs" />
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperDeepMapper.cs" />
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperDeepMapperSetup.cs" />
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperFlatteningMapper.cs" />
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperInstantiation.cs" />
<Compile Include="ConcreteMappers\Manual\ManualComplexTypeMapper.cs" />
<Compile Include="ConcreteMappers\Manual\ManualCtorMapper.cs" />
<Compile Include="ConcreteMappers\Manual\ManualDeepMapper.cs" />
<Compile Include="ConcreteMappers\Manual\ManualFlatteningMapper.cs" />
<Compile Include="ConcreteMappers\Manual\ManualUnflatteningMapper.cs" />
<Compile Include="ConcreteMappers\Mapster\MapsterMapperInstantiation.cs" />
<Compile Include="ConcreteMappers\Mapster\MapsterEntityMapperSetup.cs" />
<Compile Include="ConcreteMappers\Mapster\MapsterEntityMapper.cs" />
<Compile Include="ConcreteMappers\Mapster\MapsterDeepMapperSetup.cs" />
<Compile Include="ConcreteMappers\Mapster\MapsterComplexTypeMapperSetup.cs" />
<Compile Include="ConcreteMappers\Mapster\MapsterComplexTypeMapper.cs" />
<Compile Include="ConcreteMappers\Mapster\MapsterCtorMapper.cs" />
<Compile Include="ConcreteMappers\Mapster\MapsterDeepMapper.cs" />
<Compile Include="ConcreteMappers\Mapster\MapsterFlatteningMapper.cs" />
<Compile Include="ConcreteMappers\ValueInjecter\ValueInjecterCtorMapper.cs" />
<Compile Include="ConcreteMappers\ValueInjecter\ValueInjecterComplexTypeMapper.cs" />
<Compile Include="ConcreteMappers\ValueInjecter\ValueInjecterDeepMapper.cs" />
<Compile Include="ConcreteMappers\ValueInjecter\ValueInjecterUnflatteningMapper.cs" />
<Compile Include="ConcreteMappers\ValueInjecter\ValueInjecterFlatteningMapper.cs" />
<Compile Include="MapperTester.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TestClasses\Ctor.cs" />
<Compile Include="TestClasses\Deep.cs" />
<Compile Include="TestClasses\Entities.cs" />
<Compile Include="TestClasses\Foo.cs" />
<Compile Include="TestClasses\Flattening.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
Expand All @@ -153,9 +92,9 @@
</None>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\AgileMapper.UnitTests.Common\AgileMapper.UnitTests.Common.csproj">
<Project>{69c1f1a9-f8a4-4cee-90e3-67b8d6dae8f6}</Project>
<Name>AgileMapper.UnitTests.Common</Name>
<ProjectReference Include="..\AgileMapper.PerformanceTesting\AgileMapper.PerformanceTesting.csproj">
<Project>{f377844c-1a00-4685-8c04-07e6067c2812}</Project>
<Name>AgileMapper.PerformanceTesting</Name>
</ProjectReference>
<ProjectReference Include="..\AgileMapper\AgileMapper.csproj">
<Project>{46d95c53-b4cb-4ee7-9573-5d3ef96099c0}</Project>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
namespace AgileObjects.AgileMapper.PerformanceTester.ConcreteMappers.ExpressMapper
namespace AgileObjects.AgileMapper.PerformanceTester.Net45.ConcreteMappers.ExpressMapper
{
using System.Collections.Generic;
using System.Linq;
using AbstractMappers;
using global::ExpressMapper;
using global::ExpressMapper.Extensions;
using static TestClasses.Complex;
using PerformanceTesting.AbstractMappers;
using static PerformanceTesting.TestClasses.Complex;

internal class ExpressMapperComplexTypeMapper : ComplexTypeMapperBase
public class ExpressMapperComplexTypeMapper : ComplexTypeMapperBase
{
public override void Initialise()
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,19 @@
namespace AgileObjects.AgileMapper.PerformanceTester.ConcreteMappers.ExpressMapper
namespace AgileObjects.AgileMapper.PerformanceTester.Net45.ConcreteMappers.ExpressMapper
{
using System.Collections.Generic;
using System.Linq;
using AbstractMappers;
using global::ExpressMapper;
using global::ExpressMapper.Extensions;
using static TestClasses.Complex;
using PerformanceTesting.AbstractMappers;
using static PerformanceTesting.TestClasses.Complex;

internal class ExpressMapperComplexTypeMapperSetup : ComplexTypeMapperSetupBase
public class ExpressMapperComplexTypeMapperSetup : ComplexTypeMapperSetupBase
{
public override void Initialise()
{
}

protected override void Reset()
{
Mapper.Reset();
}

protected override void SetupComplexTypeMapper()
protected override Foo SetupComplexTypeMapper(Foo sourceFoo)
{
Mapper
.Register<Foo, Foo>()
Expand All @@ -29,7 +24,9 @@ protected override void SetupComplexTypeMapper()

Mapper.Compile();

Mapper.Map<Foo, Foo>(new Foo());
return Mapper.Map<Foo, Foo>(sourceFoo);
}

protected override void Reset() => Mapper.Reset();
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
namespace AgileObjects.AgileMapper.PerformanceTester.ConcreteMappers.ExpressMapper
namespace AgileObjects.AgileMapper.PerformanceTester.Net45.ConcreteMappers.ExpressMapper
{
using AbstractMappers;
using global::ExpressMapper;
using static TestClasses.Ctor;
using PerformanceTesting.AbstractMappers;
using static PerformanceTesting.TestClasses.Ctor;

internal class ExpressMapperCtorMapper : CtorMapperBase
public class ExpressMapperCtorMapper : CtorMapperBase
{
public override void Initialise()
{
Expand All @@ -16,8 +16,6 @@ public override void Initialise()
}

protected override ConstructedObject Construct(ValueObject valueObject)
{
return Mapper.Map<ValueObject, ConstructedObject>(valueObject);
}
=> Mapper.Map<ValueObject, ConstructedObject>(valueObject);
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
namespace AgileObjects.AgileMapper.PerformanceTester.ConcreteMappers.ExpressMapper
namespace AgileObjects.AgileMapper.PerformanceTester.Net45.ConcreteMappers.ExpressMapper
{
using System.Collections.Generic;
using AbstractMappers;
using global::ExpressMapper;
using global::ExpressMapper.Extensions;
using static TestClasses.Deep;
using PerformanceTesting.AbstractMappers;
using static PerformanceTesting.TestClasses.Deep;

internal class ExpressMapperDeepMapper : DeepMapperBase
public class ExpressMapperDeepMapper : DeepMapperBase
{
public override void Initialise()
{
Expand All @@ -28,8 +28,6 @@ public override void Initialise()
}

protected override CustomerDto Map(Customer customer)
{
return Mapper.Map<Customer, CustomerDto>(customer);
}
=> Mapper.Map<Customer, CustomerDto>(customer);
}
}
Original file line number Diff line number Diff line change
@@ -1,23 +1,18 @@
namespace AgileObjects.AgileMapper.PerformanceTester.ConcreteMappers.ExpressMapper
namespace AgileObjects.AgileMapper.PerformanceTester.Net45.ConcreteMappers.ExpressMapper
{
using System.Collections.Generic;
using AbstractMappers;
using global::ExpressMapper;
using global::ExpressMapper.Extensions;
using static TestClasses.Deep;
using PerformanceTesting.AbstractMappers;
using static PerformanceTesting.TestClasses.Deep;

internal class ExpressMapperDeepMapperSetup : DeepMapperSetupBase
public class ExpressMapperDeepMapperSetup : DeepMapperSetupBase
{
public override void Initialise()
{
}

protected override void Reset()
{
Mapper.Reset();
}

protected override void SetupDeepMapper()
protected override CustomerDto SetupDeepMapper(Customer customer)
{
Mapper
.Register<Customer, CustomerDto>()
Expand All @@ -35,7 +30,9 @@ protected override void SetupDeepMapper()

Mapper.Compile();

Mapper.Map<Customer, CustomerDto>(new Customer());
return Mapper.Map<Customer, CustomerDto>(customer);
}

protected override void Reset() => Mapper.Reset();
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
namespace AgileObjects.AgileMapper.PerformanceTester.ConcreteMappers.ExpressMapper
namespace AgileObjects.AgileMapper.PerformanceTester.Net45.ConcreteMappers.ExpressMapper
{
using AbstractMappers;
using global::ExpressMapper;
using static TestClasses.Flattening;
using PerformanceTesting.AbstractMappers;
using static PerformanceTesting.TestClasses.Flattening;

internal class ExpressMapperFlatteningMapper : FlatteningMapperBase
public class ExpressMapperFlatteningMapper : FlatteningMapperBase
{
public override void Initialise()
{
Expand All @@ -19,8 +19,6 @@ public override void Initialise()
}

protected override ModelDto Flatten(ModelObject model)
{
return Mapper.Map<ModelObject, ModelDto>(model);
}
=> Mapper.Map<ModelObject, ModelDto>(model);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace AgileObjects.AgileMapper.PerformanceTester.Net45.ConcreteMappers.ExpressMapper
{
using global::ExpressMapper;
using PerformanceTesting.AbstractMappers;

public class ExpressMapperInstantiation : MapperInstantiationBase
{
protected override object CreateMapperInstance() => new MappingServiceProvider();
}
}
26 changes: 26 additions & 0 deletions AgileMapper.PerformanceTester.Net45/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// AgileMapper and AutoMapper perform better with this attribute applied,
// but ExpressMapper and Mapster throw exceptions - uncomment to test the
// Agile and Auto at their fastest:
//[assembly: System.Security.AllowPartiallyTrustedCallers]

namespace AgileObjects.AgileMapper.PerformanceTester.Net45
{
using ConcreteMappers.ExpressMapper;
using PerformanceTesting;

// Specify comma-separated sets of mapper Ids and (optionally) test Ids from the string arrays
// below if desired. e.g:
// - Run the deep and complex tests for AgileMapper:
// ag deep,compl
// - Run the constructor and flattening mapping tests for the manual and ExpressMapper mappers:
// man,exp ctor,flat
public class Program
{
public static void Main(string[] args)
{
new PerformanceTestRunner()
.AddMapper("exp", typeof(ExpressMapperCtorMapper))
.Run(args);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\common.props" />

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
<AssemblyName>AgileObjects.AgileMapper.PerformanceTester.NetCore21</AssemblyName>
<RootNamespace>AgileObjects.AgileMapper.PerformanceTester.NetCore21</RootNamespace>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="AutoMapper" Version="7.0.1" />
<PackageReference Include="Mapster" Version="3.1.8" />
<PackageReference Include="ValueInjecter" Version="3.1.3" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\AgileMapper.PerformanceTesting\AgileMapper.PerformanceTesting.csproj" />
<ProjectReference Include="..\AgileMapper.UnitTests.Common\AgileMapper.UnitTests.Common.csproj" />
<ProjectReference Include="..\AgileMapper\AgileMapper.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
namespace AgileObjects.AgileMapper.PerformanceTester.NetCore21.ConcreteMappers.Mapster
{
// warehouse.Adapt<Warehouse, Warehouse>(); throws a StackOverflowException

//using global::Mapster;
//using PerformanceTesting.AbstractMappers;
//using static PerformanceTesting.TestClasses.Entities;

//public class MapsterEntityMapperSetup : EntityMapperSetupBase
//{
// public override void Initialise()
// {
// }

// protected override Warehouse SetupEntityMapper(Warehouse warehouse)
// {
// TypeAdapterConfig<Warehouse, Warehouse>.NewConfig()
// // .Map(dest => dest.Foos, src => src.Foos ?? new List<Foo>())
// .Compile();

// return warehouse.Adapt<Warehouse, Warehouse>();
// }

// protected override void Reset()
// => TypeAdapterConfig<Warehouse, Warehouse>.Clear();
//}
}
14 changes: 14 additions & 0 deletions AgileMapper.PerformanceTester.NetCore21/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
namespace AgileObjects.AgileMapper.PerformanceTester.NetCore21
{
using PerformanceTesting;

public class Program
{
public static void Main(string[] args)
{
new PerformanceTestRunner()
//.AddTest(MapperIds.Mapster, typeof(MapsterEntityMapperSetup))
.Run(args);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"profiles": {
"AgileMapper.PerformanceTester.NetCore21": {
"commandName": "Project",
"commandLineArgs": "ma ents"
}
}
}
Loading