Two passes can be far more efficient if you take memory layout and pagefaults into account.
Same logic as to why you can assemble a set of identical pieces of IKEA furniture faster if you first do step 1 for all pieces, then step 2 for all pieces etc, than if you assemble the pieces one by one.
Same logic as to why you can assemble a set of identical pieces of IKEA furniture faster if you first do step 1 for all pieces, then step 2 for all pieces etc, than if you assemble the pieces one by one.