Click here to Skip to main content
12,749,596 members (32,553 online)
Click here to Skip to main content
Add your own
alternative version

Tagged as

Stats

9.7K views
4 bookmarked
Posted 30 Apr 2015

Automapper Performance Testing

, 30 Apr 2015 CPOL
Rate this:
Please Sign up or sign in to vote.
Automapper performance testing

I hate typing more lines of code then I need to; especially something as simple as mapping a domain model to a view model.  Enter Automapper!

By performing a one-liner:

Mapper.Map<Customer, CustomerViewItem>(customer);

I can quickly map my domain models to my view models.

I was recently reviewing an old article on CodeProject: http://www.codeproject.com/Articles/61629/AutoMapper that contains a quick and easy demo. Inside this article, it discusses performance and it indicates that Automapper is 7 times slower than manual mapping. This test was done on 100,000 records and I must say I was shocked.

My first thought is this requires more testing. Especially since 100,000 records is a lot. In most scenarios, I would estimate my largest mapping might be 1,000, but even 1 would probably be a very regular use-case. Let's put it to the test?

I've created a simple console application and put it on GitHub here:

This program does the following:

  • Creates and populates a list of Customers
  • Times and automaps a Customer object to a CustomerViewItem
  • Times and manual maps a Customer object to a CustomerViewItem
  • Executes in a multiplication of 10, e.g. 1, 10, 100, 1000, 10000, and 100000

Here were the results I received:

AutoMapper with 1: 24
Manual Map with 1: 0

AutoMapper with 10: 0
Manual Map with 10: 0

AutoMapper with 100: 1
Manual Map with 100: 0

AutoMapper with 1000: 18
Manual Map with 1000: 0

AutoMapper with 10000: 112
Manual Map with 10000: 1

AutoMapper with 100000: 1070
Manual Map with 100000: 14

As you can see, my results are very similar to the original CodeProject article results. Here's the catch, when the results are 1,000 or less, the difference is negligible! This is what becomes important; sure, if I'm doing a loop of 100,000, it's over 1 second compared to a few milliseconds.

This is good to know.  I can now make an intelligent decision of when to use Automapper versus when to write it manually!

Summary

While Automapper is indeed consistently slower, when the list is 1,000 items or less, I won't even notice the difference. If my list is in the 10,000+ there are clear slowdowns. As I stated in my introduction though, these are probably edge-cases that can be dealt with when the time comes but I think it's safe to assume that Automapper in an 'average' project won't inhibit you too much and save you from writing lots of lines of code!

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Jamie Munro
Software Developer (Senior)
Canada Canada
I am the author of five books: ASP.NET MVC 5 with Bootstrap and Knockout.js, Knockout.js: Building Dynamic Client-Side Web Applications, 20 Recipes for Programming PhoneGap, 20 Recipes for Programming MVC 3, and Rapid Application Development with CakePHP.

I enjoy reading and writing and I like to blog as much as I can on my personal blog EndYourIf.

I'm a father of three kids, twins (boy and a girl) and another baby girl.

You may also be interested in...

Pro
Pro

Comments and Discussions

 
NewsSpeed no longer an issue! Pin
MetalKid00727-Oct-16 8:14
memberMetalKid00727-Oct-16 8:14 
Questionalternatives to automapper Pin
jecaestevez6-May-16 4:31
memberjecaestevez6-May-16 4:31 
QuestionAnother Alternative Pin
Eric Swann22-Feb-16 7:53
memberEric Swann22-Feb-16 7:53 
QuestionAutomapper Alternative Pin
hoangcute9x3-May-15 19:38
professionalhoangcute9x3-May-15 19:38 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.170215.1 | Last Updated 1 May 2015
Article Copyright 2015 by Jamie Munro
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid