One more way to speed things up, actually: If your source and destination objects have property names that match each other exactly, such as:
order.customer.address.streetName -> orderDTO.customer.address.streetName
...then you can use the EXACT matching strategy (MatchingStrategies.EXACT) which will speed up the matching process a bit. Keep in mind, the matching process where source and destination properties are matched to each other only occurs
once per source/destination type pair, per ModelMapper instance (which is why re-using the ModelMapper instance is a win). So you're only a saving a bit on performance the first time matches these two types, but still I thought I'd mention it.
Cheers,
Jonathan