Skip to content

Commit a4d22fd

Browse files
authored
Net core performance tests (#96)
* Start of platform-specific performance test changes * Adding performance tester library * Moving test classes into performancing testing library * Commenting out AutoMapper and Mapster entity mapper setup tests * Adding NetCore 2.1 performance tester project * Updating mapper tests
1 parent 9c0fc3e commit a4d22fd

File tree

121 files changed

+895
-836
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

121 files changed

+895
-836
lines changed

AgileMapper.PerformanceTester/AgileMapper.PerformanceTester.csproj renamed to AgileMapper.PerformanceTester.Net45/AgileMapper.PerformanceTester.Net45.csproj

Lines changed: 7 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
<ProjectGuid>{2B8A4535-7E5C-4DB6-BB86-06AEB4F3DE81}</ProjectGuid>
99
<OutputType>Exe</OutputType>
1010
<AppDesignerFolder>Properties</AppDesignerFolder>
11-
<RootNamespace>AgileObjects.AgileMapper.PerformanceTester</RootNamespace>
12-
<AssemblyName>AgileObjects.AgileMapper.PerformanceTester</AssemblyName>
11+
<RootNamespace>AgileObjects.AgileMapper.PerformanceTester.Net45</RootNamespace>
12+
<AssemblyName>AgileObjects.AgileMapper.PerformanceTester.Net45</AssemblyName>
1313
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
1414
<FileAlignment>512</FileAlignment>
1515
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
@@ -75,76 +75,15 @@
7575
<Compile Include="..\VersionInfo.cs">
7676
<Link>VersionInfo.cs</Link>
7777
</Compile>
78-
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperInstantiation.cs" />
79-
<Compile Include="AbstractMappers\DeepMapperSetupBase.cs" />
80-
<Compile Include="AbstractMappers\EntityMapperBase.cs" />
81-
<Compile Include="AbstractMappers\EntityMapperSetupBase.cs" />
82-
<Compile Include="AbstractMappers\MapperInstantiationBase.cs" />
83-
<Compile Include="AbstractMappers\MapperSetupTestBase.cs" />
84-
<Compile Include="AbstractMappers\MapperTestBase.cs" />
85-
<Compile Include="AbstractMappers\UnflatteningMapperSetupBase.cs" />
86-
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperEntityMapper.cs" />
87-
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperEntityMapperSetup.cs" />
88-
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperUnflatteningMapperSetup.cs" />
89-
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperComplexTypeMapperSetup.cs" />
90-
<Compile Include="AbstractMappers\ComplexTypeMapperSetupBase.cs" />
91-
<Compile Include="AbstractMappers\UnflatteningMapperBase.cs" />
92-
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperCtorMapper.cs" />
93-
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperComplexTypeMapper.cs" />
94-
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperDeepMapperSetup.cs" />
95-
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperDeepMapper.cs" />
96-
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperUnflatteningMapper.cs" />
97-
<Compile Include="ConcreteMappers\AgileMapper\AgileMapperFlatteningMapper.cs" />
98-
<Compile Include="AbstractMappers\ComplexTypeMapperBase.cs" />
99-
<Compile Include="AbstractMappers\CtorMapperBase.cs" />
100-
<Compile Include="AbstractMappers\DeepMapperBase.cs" />
101-
<Compile Include="AbstractMappers\FlatteningMapperBase.cs" />
102-
<Compile Include="AbstractMappers\IObjectMapperTest.cs" />
103-
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperInstantiation.cs" />
104-
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperEntityMapperSetup.cs" />
105-
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperEntityMapper.cs" />
106-
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperUnflatteningMapperSetup.cs" />
107-
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperDeepMapperSetup.cs" />
108-
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperComplexTypeMapperSetup.cs" />
109-
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperUnflatteningMapper.cs" />
110-
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperCtorMapper.cs" />
111-
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperComplexTypeMapper.cs" />
112-
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperDeepMapper.cs" />
113-
<Compile Include="ConcreteMappers\AutoMapper\AutoMapperFlatteningMapper.cs" />
114-
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperDeepMapperSetup.cs" />
78+
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperComplexTypeMapper.cs" />
11579
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperComplexTypeMapperSetup.cs" />
11680
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperCtorMapper.cs" />
117-
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperComplexTypeMapper.cs" />
11881
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperDeepMapper.cs" />
82+
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperDeepMapperSetup.cs" />
11983
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperFlatteningMapper.cs" />
12084
<Compile Include="ConcreteMappers\ExpressMapper\ExpressMapperInstantiation.cs" />
121-
<Compile Include="ConcreteMappers\Manual\ManualComplexTypeMapper.cs" />
122-
<Compile Include="ConcreteMappers\Manual\ManualCtorMapper.cs" />
123-
<Compile Include="ConcreteMappers\Manual\ManualDeepMapper.cs" />
124-
<Compile Include="ConcreteMappers\Manual\ManualFlatteningMapper.cs" />
125-
<Compile Include="ConcreteMappers\Manual\ManualUnflatteningMapper.cs" />
126-
<Compile Include="ConcreteMappers\Mapster\MapsterMapperInstantiation.cs" />
127-
<Compile Include="ConcreteMappers\Mapster\MapsterEntityMapperSetup.cs" />
128-
<Compile Include="ConcreteMappers\Mapster\MapsterEntityMapper.cs" />
129-
<Compile Include="ConcreteMappers\Mapster\MapsterDeepMapperSetup.cs" />
130-
<Compile Include="ConcreteMappers\Mapster\MapsterComplexTypeMapperSetup.cs" />
131-
<Compile Include="ConcreteMappers\Mapster\MapsterComplexTypeMapper.cs" />
132-
<Compile Include="ConcreteMappers\Mapster\MapsterCtorMapper.cs" />
133-
<Compile Include="ConcreteMappers\Mapster\MapsterDeepMapper.cs" />
134-
<Compile Include="ConcreteMappers\Mapster\MapsterFlatteningMapper.cs" />
135-
<Compile Include="ConcreteMappers\ValueInjecter\ValueInjecterCtorMapper.cs" />
136-
<Compile Include="ConcreteMappers\ValueInjecter\ValueInjecterComplexTypeMapper.cs" />
137-
<Compile Include="ConcreteMappers\ValueInjecter\ValueInjecterDeepMapper.cs" />
138-
<Compile Include="ConcreteMappers\ValueInjecter\ValueInjecterUnflatteningMapper.cs" />
139-
<Compile Include="ConcreteMappers\ValueInjecter\ValueInjecterFlatteningMapper.cs" />
140-
<Compile Include="MapperTester.cs" />
14185
<Compile Include="Program.cs" />
14286
<Compile Include="Properties\AssemblyInfo.cs" />
143-
<Compile Include="TestClasses\Ctor.cs" />
144-
<Compile Include="TestClasses\Deep.cs" />
145-
<Compile Include="TestClasses\Entities.cs" />
146-
<Compile Include="TestClasses\Foo.cs" />
147-
<Compile Include="TestClasses\Flattening.cs" />
14887
</ItemGroup>
14988
<ItemGroup>
15089
<None Include="App.config" />
@@ -153,9 +92,9 @@
15392
</None>
15493
</ItemGroup>
15594
<ItemGroup>
156-
<ProjectReference Include="..\AgileMapper.UnitTests.Common\AgileMapper.UnitTests.Common.csproj">
157-
<Project>{69c1f1a9-f8a4-4cee-90e3-67b8d6dae8f6}</Project>
158-
<Name>AgileMapper.UnitTests.Common</Name>
95+
<ProjectReference Include="..\AgileMapper.PerformanceTesting\AgileMapper.PerformanceTesting.csproj">
96+
<Project>{f377844c-1a00-4685-8c04-07e6067c2812}</Project>
97+
<Name>AgileMapper.PerformanceTesting</Name>
15998
</ProjectReference>
16099
<ProjectReference Include="..\AgileMapper\AgileMapper.csproj">
161100
<Project>{46d95c53-b4cb-4ee7-9573-5d3ef96099c0}</Project>

AgileMapper.PerformanceTester/ConcreteMappers/ExpressMapper/ExpressMapperComplexTypeMapper.cs renamed to AgileMapper.PerformanceTester.Net45/ConcreteMappers/ExpressMapper/ExpressMapperComplexTypeMapper.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
namespace AgileObjects.AgileMapper.PerformanceTester.ConcreteMappers.ExpressMapper
1+
namespace AgileObjects.AgileMapper.PerformanceTester.Net45.ConcreteMappers.ExpressMapper
22
{
33
using System.Collections.Generic;
44
using System.Linq;
5-
using AbstractMappers;
65
using global::ExpressMapper;
76
using global::ExpressMapper.Extensions;
8-
using static TestClasses.Complex;
7+
using PerformanceTesting.AbstractMappers;
8+
using static PerformanceTesting.TestClasses.Complex;
99

10-
internal class ExpressMapperComplexTypeMapper : ComplexTypeMapperBase
10+
public class ExpressMapperComplexTypeMapper : ComplexTypeMapperBase
1111
{
1212
public override void Initialise()
1313
{
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,19 @@
1-
namespace AgileObjects.AgileMapper.PerformanceTester.ConcreteMappers.ExpressMapper
1+
namespace AgileObjects.AgileMapper.PerformanceTester.Net45.ConcreteMappers.ExpressMapper
22
{
33
using System.Collections.Generic;
44
using System.Linq;
5-
using AbstractMappers;
65
using global::ExpressMapper;
76
using global::ExpressMapper.Extensions;
8-
using static TestClasses.Complex;
7+
using PerformanceTesting.AbstractMappers;
8+
using static PerformanceTesting.TestClasses.Complex;
99

10-
internal class ExpressMapperComplexTypeMapperSetup : ComplexTypeMapperSetupBase
10+
public class ExpressMapperComplexTypeMapperSetup : ComplexTypeMapperSetupBase
1111
{
1212
public override void Initialise()
1313
{
1414
}
1515

16-
protected override void Reset()
17-
{
18-
Mapper.Reset();
19-
}
20-
21-
protected override void SetupComplexTypeMapper()
16+
protected override Foo SetupComplexTypeMapper(Foo sourceFoo)
2217
{
2318
Mapper
2419
.Register<Foo, Foo>()
@@ -29,7 +24,9 @@ protected override void SetupComplexTypeMapper()
2924

3025
Mapper.Compile();
3126

32-
Mapper.Map<Foo, Foo>(new Foo());
27+
return Mapper.Map<Foo, Foo>(sourceFoo);
3328
}
29+
30+
protected override void Reset() => Mapper.Reset();
3431
}
3532
}
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
namespace AgileObjects.AgileMapper.PerformanceTester.ConcreteMappers.ExpressMapper
1+
namespace AgileObjects.AgileMapper.PerformanceTester.Net45.ConcreteMappers.ExpressMapper
22
{
3-
using AbstractMappers;
43
using global::ExpressMapper;
5-
using static TestClasses.Ctor;
4+
using PerformanceTesting.AbstractMappers;
5+
using static PerformanceTesting.TestClasses.Ctor;
66

7-
internal class ExpressMapperCtorMapper : CtorMapperBase
7+
public class ExpressMapperCtorMapper : CtorMapperBase
88
{
99
public override void Initialise()
1010
{
@@ -16,8 +16,6 @@ public override void Initialise()
1616
}
1717

1818
protected override ConstructedObject Construct(ValueObject valueObject)
19-
{
20-
return Mapper.Map<ValueObject, ConstructedObject>(valueObject);
21-
}
19+
=> Mapper.Map<ValueObject, ConstructedObject>(valueObject);
2220
}
2321
}

AgileMapper.PerformanceTester/ConcreteMappers/ExpressMapper/ExpressMapperDeepMapper.cs renamed to AgileMapper.PerformanceTester.Net45/ConcreteMappers/ExpressMapper/ExpressMapperDeepMapper.cs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
namespace AgileObjects.AgileMapper.PerformanceTester.ConcreteMappers.ExpressMapper
1+
namespace AgileObjects.AgileMapper.PerformanceTester.Net45.ConcreteMappers.ExpressMapper
22
{
33
using System.Collections.Generic;
4-
using AbstractMappers;
54
using global::ExpressMapper;
65
using global::ExpressMapper.Extensions;
7-
using static TestClasses.Deep;
6+
using PerformanceTesting.AbstractMappers;
7+
using static PerformanceTesting.TestClasses.Deep;
88

9-
internal class ExpressMapperDeepMapper : DeepMapperBase
9+
public class ExpressMapperDeepMapper : DeepMapperBase
1010
{
1111
public override void Initialise()
1212
{
@@ -28,8 +28,6 @@ public override void Initialise()
2828
}
2929

3030
protected override CustomerDto Map(Customer customer)
31-
{
32-
return Mapper.Map<Customer, CustomerDto>(customer);
33-
}
31+
=> Mapper.Map<Customer, CustomerDto>(customer);
3432
}
3533
}
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,18 @@
1-
namespace AgileObjects.AgileMapper.PerformanceTester.ConcreteMappers.ExpressMapper
1+
namespace AgileObjects.AgileMapper.PerformanceTester.Net45.ConcreteMappers.ExpressMapper
22
{
33
using System.Collections.Generic;
4-
using AbstractMappers;
54
using global::ExpressMapper;
65
using global::ExpressMapper.Extensions;
7-
using static TestClasses.Deep;
6+
using PerformanceTesting.AbstractMappers;
7+
using static PerformanceTesting.TestClasses.Deep;
88

9-
internal class ExpressMapperDeepMapperSetup : DeepMapperSetupBase
9+
public class ExpressMapperDeepMapperSetup : DeepMapperSetupBase
1010
{
1111
public override void Initialise()
1212
{
1313
}
1414

15-
protected override void Reset()
16-
{
17-
Mapper.Reset();
18-
}
19-
20-
protected override void SetupDeepMapper()
15+
protected override CustomerDto SetupDeepMapper(Customer customer)
2116
{
2217
Mapper
2318
.Register<Customer, CustomerDto>()
@@ -35,7 +30,9 @@ protected override void SetupDeepMapper()
3530

3631
Mapper.Compile();
3732

38-
Mapper.Map<Customer, CustomerDto>(new Customer());
33+
return Mapper.Map<Customer, CustomerDto>(customer);
3934
}
35+
36+
protected override void Reset() => Mapper.Reset();
4037
}
4138
}
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
namespace AgileObjects.AgileMapper.PerformanceTester.ConcreteMappers.ExpressMapper
1+
namespace AgileObjects.AgileMapper.PerformanceTester.Net45.ConcreteMappers.ExpressMapper
22
{
3-
using AbstractMappers;
43
using global::ExpressMapper;
5-
using static TestClasses.Flattening;
4+
using PerformanceTesting.AbstractMappers;
5+
using static PerformanceTesting.TestClasses.Flattening;
66

7-
internal class ExpressMapperFlatteningMapper : FlatteningMapperBase
7+
public class ExpressMapperFlatteningMapper : FlatteningMapperBase
88
{
99
public override void Initialise()
1010
{
@@ -19,8 +19,6 @@ public override void Initialise()
1919
}
2020

2121
protected override ModelDto Flatten(ModelObject model)
22-
{
23-
return Mapper.Map<ModelObject, ModelDto>(model);
24-
}
22+
=> Mapper.Map<ModelObject, ModelDto>(model);
2523
}
2624
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace AgileObjects.AgileMapper.PerformanceTester.Net45.ConcreteMappers.ExpressMapper
2+
{
3+
using global::ExpressMapper;
4+
using PerformanceTesting.AbstractMappers;
5+
6+
public class ExpressMapperInstantiation : MapperInstantiationBase
7+
{
8+
protected override object CreateMapperInstance() => new MappingServiceProvider();
9+
}
10+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// AgileMapper and AutoMapper perform better with this attribute applied,
2+
// but ExpressMapper and Mapster throw exceptions - uncomment to test the
3+
// Agile and Auto at their fastest:
4+
//[assembly: System.Security.AllowPartiallyTrustedCallers]
5+
6+
namespace AgileObjects.AgileMapper.PerformanceTester.Net45
7+
{
8+
using ConcreteMappers.ExpressMapper;
9+
using PerformanceTesting;
10+
11+
// Specify comma-separated sets of mapper Ids and (optionally) test Ids from the string arrays
12+
// below if desired. e.g:
13+
// - Run the deep and complex tests for AgileMapper:
14+
// ag deep,compl
15+
// - Run the constructor and flattening mapping tests for the manual and ExpressMapper mappers:
16+
// man,exp ctor,flat
17+
public class Program
18+
{
19+
public static void Main(string[] args)
20+
{
21+
new PerformanceTestRunner()
22+
.AddMapper("exp", typeof(ExpressMapperCtorMapper))
23+
.Run(args);
24+
}
25+
}
26+
}

0 commit comments

Comments
 (0)