Before looping through the line items to fix them we should add a check that they even do need to be fixed.  

So add a check like this to improve performance:
return unless order.line_items.where('currency != ?', order.currency).size > 0