小编Igo*_*gor的帖子

发射映射器与valueinjecter或automapper性能

我花了一些时间比较这三个映射器,有趣的是为什么在emitmapper和任何valueinjecter或者automapper之间有如此大的性能差异(最后两个可以通过性能进行比较).来自emitmapper解决方案的基准测试(1000000次迭代):

    Auto Mapper (simple):        38483 milliseconds
    Emit Mapper (simple):        118 milliseconds
    Handwritten Mapper (simple): 37 milliseconds

    Auto Mapper (Nested):        53800 milliseconds
    Emit Mapper (Nested):        130 milliseconds
    Handwritten Mapper (Nested): 128 milliseconds

    Auto Mapper (Custom):        49587 milliseconds
    Emit Mapper (Custom):        231 milliseconds
Run Code Online (Sandbox Code Playgroud)

还有一些来自valueinjecter的基准测试运行了添加的emitmapper(10000次迭代):

    Convention: 00:00:00.5016074
    Automapper: 00:00:00.1992945 
    Smart convention: 00:00:00.2132185
    Emit mapper(each time new mapper): 00:00:00.1168676
    Emit mapper(one mapper): 00:00:00.0012337
Run Code Online (Sandbox Code Playgroud)

首先发射映射器测试 - 每次创建它,第二次 - 所有转换的一个映射器.

考虑到这一点,作为valueinjecter(也作为automapper)的结果比发射映射器的结果慢100倍.如此巨大的性能差异是什么原因?至于我对象,对象映射器与手写映射器相比不能花费那么多时间,因为它是项目的瓶颈(例如,如果我们需要映射对象的集合).

此刻我正在考虑使用emit mapper,但只有一个原因我还没准备好决定:首先开发人员根本不支持发射映射器,但我不确定这是非常重要的(非常低的可能性)要求一些额外的功能).

.net performance automapper emitmapper

21
推荐指数
1
解决办法
9417
查看次数

标签 统计

.net ×1

automapper ×1

emitmapper ×1

performance ×1