3 min to read
Ja mapuje, ty małpujesz

Ile to już lat minęło od pierwszego projektu w którym używałeś mapper’a? To był AutoMapper, prawda?
Najlepszy przyjaciel programistów, wróg wydajności. I ta rozkminka za każdym razem… czy ja na pewno mogę mapować (nie muszę małpować). Dosyć dawno już Mariusz polecał ValueInjecter, ale różnica wydajnościowa była nieznaczna i ciężko było znaleźć coś lepszego. Na szczęście od tamtej rozmowy minęło już trochę czasu, a na rynku pojawiło się więcej bibliotek mapujących :simple_smile:
Na stronie ExpressMapper’amożna sobie porównać wydajność poszczególnych małpek. Zmałpuje i przetworzę wyniki testów w postaci rankingów.
Ranking
Osie X - liczba zmapowanych obiektów
Osie Y - czas mapowania podany w milisekundach
wartość -1 - niewspierany rodzaj mapowania
XXL - Zaawansowane mapowanie - zagnieżdzone kolekcje - afterMap - beforeMap
- ExpressMapper
- MAŁPA*
- Mapster
- AutoMapper
- ValueInjecter
XL - Zaawansowane mapowanie - zagnieżdzone kolekcje
- ExpressMapper
- MAŁPA
- OoMapper
- Mapster
- ValueInjecter
- AutoMapper
L - relacja 1 do wielu
- ExpressMapper
- MAŁPA
- OoMapper
- Mappster
- ValueInjecter
- AutoMapper
M - relacja 1 do 1
- MAŁPA
- ExpressMapper
- OoMapper
- Mapster
- ValueInjecter
- AutoMapper
S - podstawowe mapowanie
- MAŁPA
- TinyMapper
- ExpressMapper
- OoMapper
- Mapster
- ValueInjecter
- AutoMapper
XS - proste mapowanie enum’ów
- MAŁPA
- ExpressMapper
- ValueInjecter
- AutoMapper
Ok.. nie wiem jak was, ale mnie to trochę zaintrygowało, przebitka imponuje. :simple_smile:
Zarówno pod względem wydajności jak i możliwości na korzyść ExpressMapper’a.
Zobaczymy jak wyjdzie w praniu, w końcu nie ma znaczenia jak głosują, ale kto głosy liczy dla niedowiarków ekipa ExpressMapper’a przygotowała projekt z testami żeby samemu można było sobie potestować.
Zostało tylko podsumować wszystkie testy. Im więcej punktów tym gorzej. Liby które w teście nie dawały rady dostały karne 1000 punktów.
lib\test | XXL | XL | L | M | S | XS | suma pkt |
MAŁPA | 2 | 2 | 2 | 1 | 1 | 1 | 9 |
ExpressMapper | 1 | 1 | 1 | 2 | 3 | 2 | 10 |
ValueInjecter | 5 | 5 | 5 | 5 | 6 | 3 | 29 |
AutoMapper | 4 | 6 | 6 | 6 | 7 | 4 | 33 |
Mapster | 3 | 4 | 4 | 4 | 5 | 1000 | 1020 |
OoMapper | 1000 | 3 | 3 | 3 | 4 | 1000 | 2013 |
TinyMapper | 1000 | 1000 | 1000 | 1000 | 2 | 1000 | 5002 |
I tak mistrzem małpowania jest MAŁPA!!! #hura #jupi #zaskoczenie
Vice mistrzem jest ExpressMapper przegrywając z MAŁPĄ tylko 1 punktem, a daleko w tyle za czołówką na 3 miejscu mamy ValueInject‘era.
Natomiast 4 miejsce zajmuje AutoMapper - jako relikt przeszłości - na zawsze zostanie w naszych sercach
A pozostałe liby… no cóż, przegrały przez karniaki.
Rys historyczny ExpressMapper’a
Po krótkich poszukiwaniach znalazłem na GitHub’ie inicjalny commit - 22 IV 2015. Pierwsza paczka do NUGETzostała wgrana 16 V 2015 -wersja 0.9.0
W porównaniu do AutoMapper - po niecałym roku popularność jest prawie zerowa.
Liczby pobrań:
AutoMapper - 3 110 477
ExpressMapper - 4 607
Pozostaje nam jedynie trzymać kciuki za rozwój
MAŁPA* - to tyle co mapowanie ręczne.
Comments