I think on earlier architectures the mov eax, 0
instruction used to take a little longer than the xor eax, eax
as well... cannot recall exactly why. Unless you have many more mov
s however I would imagine you're not likely to cause cache misses due to that one literal stored in the code.
Also note that from memory the status of the flags is not identical between these methods, but I may be misremembering this.