A quantifier is greedy by default: it takes as much as it can, then hands characters back one at a time until the rest of the pattern fits. That handing-back is backtracking, and it is most of what a regex engine does.
Put a ? after a quantifier and it becomes lazy: it takes as little as it can, then is forced to take more, one at a time, until the rest of the pattern fits.
Lazy is not a synonym for efficient. On an input where the match is near the end, lazy does more work than greedy, because it has to be pushed forward the whole way. The step meter is where this stops being an argument and becomes a number.
The right reason to choose lazy is that it matches something different — usually the nearest closing thing rather than the last closing thing.
There is usually a third option that beats both: say what you actually mean. A negated class says everything up to the next quote directly, and there is nothing for the engine to give back.