123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- using AutoMapper;
- using Masuit.Tools.Mapping;
- using Masuit.Tools.Systems;
- using System;
- using System.Collections.Generic;
- namespace Masuit.Tools.ExpressionMapperBenchmark
- {
- class Program
- {
- static void Main(string[] args)
- {
- #region 配置automapper
- var mapper = new MapperConfiguration(e =>
- {
- e.CreateMap<TestClassA, TestClassB>().ReverseMap();
- e.CreateMap<TestClassC, TestClassD>().ReverseMap();
- }).CreateMapper();
- #endregion
- #region 配置ExpressionMapper
- ExpressionMapper.CreateMap<TestClassA, TestClassB>().ReverseMap();
- ExpressionMapper.CreateMap<TestClassC, TestClassD>().ReverseMap();
- #endregion
- #region 造一个大对象
- var a = new TestClassA()
- {
- MyProperty = "ssssssssssssssssssssss",
- DateTime = DateTime.Now,
- Double = 123.33,
- Int = 100,
- TestClassC = new TestClassC()
- {
- MyProperty = "ccccccccccccccccccccccccccc",
- DateTime = DateTime.Now,
- Double = 2345.555,
- Int = 10100,
- Obj = new TestClassD()
- {
- MyProperty = "ddddddddddddddddddddddddd",
- Obj = new TestClassC()
- {
- MyProperty = "cccccc",
- DateTime = DateTime.Now,
- Double = 23458894.555,
- Int = 10100000,
- Obj = new TestClassD()
- }
- }
- },
- List = new List<TestClassC>()
- {
- new TestClassC()
- {
- MyProperty = "cccccc",
- DateTime = DateTime.Now,
- Double = 2345.555,
- Int = 10100,
- Obj = new TestClassD()
- {
- MyProperty = "ddddddddddddddddddddddddddddddddddd",
- DateTime = DateTime.Now,
- Double = 2345.555,
- Int = 10100,
- Obj = new TestClassC()
- {
- MyProperty = "cccccccccccccccccccccccccccccc",
- DateTime = DateTime.Now,
- Double = 2345.555,
- Int = 10100,
- Obj = new TestClassD()
- }
- }
- },
- new TestClassC()
- {
- MyProperty = "cccccc",
- DateTime = DateTime.Now,
- Double = 2345.555,
- Int = 10100,
- Obj = new TestClassD()
- {
- MyProperty = "ddddddddddddddddddddddddddddddddddd",
- DateTime = DateTime.Now,
- Double = 2345.555,
- Int = 10100,
- Obj = new TestClassC()
- {
- MyProperty = "cccccccccccccccccccccccccccccc",
- DateTime = DateTime.Now,
- Double = 2345.555,
- Int = 10100,
- Obj = new TestClassD()
- }
- }
- },
- new TestClassC()
- {
- MyProperty = "cccccc",
- DateTime = DateTime.Now,
- Double = 2345.555,
- Int = 10100,
- Obj = new TestClassD()
- {
- MyProperty = "ddddddddddddddddddddddddddddddddddd",
- DateTime = DateTime.Now,
- Double = 2345.555,
- Int = 10100,
- Obj = new TestClassC()
- {
- MyProperty = "cccccccccccccccccccccccccccccc",
- DateTime = DateTime.Now,
- Double = 2345.555,
- Int = 10100,
- Obj = new TestClassD()
- }
- }
- },
- new TestClassC()
- {
- MyProperty = "cccccc",
- DateTime = DateTime.Now,
- Double = 2345.555,
- Int = 10100,
- Obj = new TestClassD()
- {
- MyProperty = "ddddddddddddddddddddddddddddddddddd",
- DateTime = DateTime.Now,
- Double = 2345.555,
- Int = 10100,
- Obj = new TestClassC()
- {
- MyProperty = "cccccccccccccccccccccccccccccc",
- DateTime = DateTime.Now,
- Double = 2345.555,
- Int = 10100,
- Obj = new TestClassD()
- }
- }
- },
- new TestClassC()
- {
- MyProperty = "cccccc",
- DateTime = DateTime.Now,
- Double = 2345.555,
- Int = 10100,
- Obj = new TestClassD()
- {
- MyProperty = "ddddddddddddddddddddddddddddddddddd",
- DateTime = DateTime.Now,
- Double = 2345.555,
- Int = 10100,
- Obj = new TestClassC()
- {
- MyProperty = "cccccccccccccccccccccccccccccc",
- DateTime = DateTime.Now,
- Double = 2345.555,
- Int = 10100,
- Obj = new TestClassD()
- }
- }
- },
- }
- };
- #endregion
- var time = HiPerfTimer.Execute(() =>
- {
- a.Map<TestClassA, TestClassB>();
- a.Map<TestClassA, TestClassB>();
- });
- Console.WriteLine($"ExpressionMapper映射2次耗时:{time}s");
- time = HiPerfTimer.Execute(() =>
- {
- for (int i = 0; i < 1000000; i++)
- {
- var b = a.Map<TestClassA, TestClassB>();
- }
- });
- Console.WriteLine($"ExpressionMapper映射100000次耗时:{time}s");
- time = HiPerfTimer.Execute(() =>
- {
- mapper.Map<TestClassB>(a);
- mapper.Map<TestClassB>(a);
- });
- Console.WriteLine($"AutoMapper映射2次耗时:{time}s");
- time = HiPerfTimer.Execute(() =>
- {
- for (int i = 0; i < 1000000; i++)
- {
- var b = mapper.Map<TestClassB>(a);
- }
- });
- Console.WriteLine($"AutoMapper映射100000次耗时:{time}s");
- }
- }
- }
|