Emit mapper vs valueinjecter или autopper производительность

Я провел некоторое время, сравнивая эти три картографа, и интересно, почему такая большая разница в производительности между 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

Также некоторые тесты из 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

Там в первом тесте emit mapper - он создавался каждый раз, во втором - один маппер для всех преобразований.

Принимая это во внимание, получим результат как valueinjecter (также как autopper) медленнее, чем в 100 раз, чем emit mapper. В чем причина такой огромной разницы в производительности? Что касается меня, то сопоставление объекта с объектным сопоставителем не может занимать столько времени по сравнению с рукописным преобразователем, сколько является узким местом проекта (если, например, нам нужно сопоставить коллекцию объектов).

В этот момент яЯ думаю об использовании Emit Mapper, но только одна причина, почему яя не готов принять решение: emit mapper вообще не поддерживается первыми разработчиками, но яЯ не уверен, что это очень важно (очень малая потребность в некоторых дополнительных функциях).

Ответы на вопрос(1)

Ваш ответ на вопрос