Mapster 2.0 Released!

We’ve released Mapster 2.0, and it’s looking really good!  This definitely puts Mapster back on top as the best, most complete, fast .Net mapper out there.  If you need something that won’t get bogged down under heavy load but has very rich features, this one’s for you.

Huge shout to Chaowlert, who took this project and ran with it, adding all of the new updates and optimizations.

Downloads

GitHub

Nuget (PM> Install-Package Mapster)

New Features

  • Big speed improvements.
  • Projection is improved to generate nicer sql queries
  • Mapster is now able to map struct
  • Flagged enum is supported
  • Settings are now much more flexible
    • You can now both opt-in and opt-out setting
    • Setting inheritance is able to inherit from interface
    • Setting inheritance is now combined (it does not only pick from the closest parent)
    • New rule based setting, you can defined your setting more granular level
    • Setting is no more static, you can overload your setting to use different setting for your mapping
  • You can ignore properties using attributes
  • Now you can setup your map from different type ie config.Map(dest => dest.AgeString, src => src.AgeInt)
  • Mapster now supports circular reference mapping!
  • Supports more frameworks (.NET 4.0, 4.5, .NET Core RC 5.4)

Benchmarks

Engine Structs Simple objects Parent-Child Parent-Children Complex objects Advance mapping
AutoMapper 10871 27075 20895 19199 19333 21496
ExpressMapper 690 1350 1195 1678 3130 3920
OoMapper 2043 1277 1416 2777
ValueInjector 8534 21089 17008 12355 16876 19970
TinyMapper 1282
Mapster 2382 1892 1626 4287 6756
Mapster 2.0 515 1251 950 1037 2455 2342
Native 458 790 870 1253 3037 2754

(NOTE: Benchmark runner is from ExpressMapper. Benchmark was run against largest set of data, times are in milliseconds, lower is better. Blank values mean the library did not supported.)

Give it a shot!

 

Leave a comment