In the docs for heapq, its written that

heapq.heappushpop(heap, item)

Push item on the heap, then pop and return the smallest item from the heap. The combined action runs more efficiently than heappush() followed by a separate call to heappop().


Why is it more efficient? 
Also is it considerably more efficient ?
heappushpop pushes an element and then pops the smallest elem. If the elem you're pushing is smaller than the heap's minimum, then there's no need to do any operations., because we know that the element we're trying to push (which is smaller than the heap min), will be popped if we do it in two operations.
This is efficient, isn't it?
How is heapq.heappushpop more efficient than heappop and heappush in python