Jam*_*oft 6 c# performance automapper
我们目前在使用在ARM设备上运行的最新版本(7.0.1)在Windows(UWP)和Android(Xamarin Native)上运行跨平台的客户端应用程序中使用AutoMapper.
我们的代码当前创建了237个映射,映射表达式是Mapper.Initialize调用的一部分.其中一些地图非常复杂,需要额外的ForMember,BeforeMap和AfterMap调用.我们的一些模型也非常庞大,需要映射的许多属性.
在做了一些初步调查后,我们发现整个Mapper.Initialize调用有时需要大约12秒才能完成(在ARM处理器上的Android和Windows设备上测试).遗憾的是,这并不理想,因为我们需要在应用程序加载时注册的映射,因此在扩展的初始屏幕期间初始化它们.
我们的应用程序以前使用的ExpressMapper具有相同数量的映射,将在8秒内进入应用程序.我们现在正在寻找从启动到使用AutoMapper的应用程序准备超过20秒.改变的原因是我们认为AutoMapper支持提交到Windows应用商店所需的.NET Native,而ExpressMapper则没有.
进行了一些进一步的测试之后,我们可以确认在CreateMap调用期间花费的时间不是MapperConfigurationExpression的一部分,而是在Initialize调用本身.
对AutoMapper函数的一些进一步研究看起来我们可能能够利用内联映射函数,但是我们发现很多我们的map也有许多我们有自定义CreateMap调用的继承对象.
我们注意到AutoMapper有一个Profiles机制,但根据文档不确定这是否是一种改进Initialize函数的方法,或者它是否只是一个容器用于映射而不是其他任何东西.
我对绩效的问题是: