I am investigating performance hotspots in an application which spends 50% of its time in memmove(3). The application inserts millions of 4-byte integers into sorted arrays,
"memcpy is more efficient than memmove." In your case, you most probably are not doing the exact same thing while you run the two functions.
In general, USE memmove only if you have to. USE it when there is a very reasonable chance that the source and destination regions are over-lapping.
Reference: https://www.youtube.com/watch?v=Yr1YnOVG-4g Dr. Jerry Cain, (Stanford Intro Systems Lecture - 7) Time: 36:00