pop
loads data from memory (stack - pointed by ss:[esp]) to a general-purpose register, memory location, or segment register. Anyway, pop
uses the processor's load unit to access the stack, while add esp
does not use the load unit. Processors since Pentium Pro do Out-of-order execution
i.e. execute as many instructions at a cycle as it has internal gates (units) available if these instructions can be executed simultaneously, and, if necessary, re-arranges the order of instructions to utilize the units fully.
Since most processors have just two load units, if you don't need data from the stack (i.e. you want to just skip the data), it is better to add esp
, because it is a register-only operation and does not employ a load unit, thus your processor will be able to use the load unit for something else at that time.