# Nuget 下版本
# 测试代码
using System; | |
using AutoMapper; | |
using System.Diagnostics; | |
using EmitMapper; | |
namespace test | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
var student = new Student | |
{ | |
Name= "test", | |
No = "1234567896766666666666666666666666666666666666666666", | |
}; | |
var watch = new Stopwatch(); | |
int count = 10000000; | |
Console.WriteLine(); | |
Console.WriteLine("Automapper 映射测试"); | |
MapperConfiguration configuration = new MapperConfiguration( | |
cfg => | |
{ | |
cfg.CreateMap<Student, StudentDto>(); | |
}); | |
var mapper = configuration.CreateMapper(); | |
watch.Start(); | |
for (int i = 0; i < count; ++i) | |
{ | |
var studentdto = mapper.Map<Student, StudentDto>(student); | |
} | |
watch.Stop(); | |
Console.WriteLine($"时间消耗:{watch.ElapsedMilliseconds}ms"); | |
Console.WriteLine(); | |
Console.WriteLine("EmitMapper 映射测试"); | |
ObjectsMapper<Student, StudentDto> emitMap = ObjectMapperManager.DefaultInstance.GetMapper<Student, StudentDto>(); | |
watch.Restart(); | |
for (int i = 0; i < count; ++i) | |
{ | |
StudentDto studentdt = emitMap.Map(student); | |
} | |
watch.Stop(); | |
Console.WriteLine($"时间消耗:{watch.ElapsedMilliseconds}ms"); | |
Console.WriteLine("\n传统方法普通映射"); | |
watch.Restart(); | |
for (int i = 0; i < count; ++i) | |
{ | |
var studentDto = new StudentDto | |
{ | |
Name = student.Name, | |
No = student.No, | |
}; | |
} | |
watch.Stop(); | |
Console.WriteLine($"时间消耗:{watch.ElapsedMilliseconds}ms"); | |
} | |
} | |
public class StudentDto | |
{ | |
public string Name{ get; set; } | |
public string No { get; set; } | |
} | |
public class Student | |
{ | |
public string Name{ get; set; } | |
public string No { get; set; } | |
} | |
} |
# 测试结果
速度对比:
AutoMapper ~ 10 倍 传统映射
EmitMapper ~ 1.5 倍 传统映射