memmove()

Submitted by markos on Tue, 01/29/2008 - 15:35.

Description

According to the man page, memmove() copies n bytes from memory area src to memory area dest. The memory areas may overlap: copying takes place as though the bytes in src are first copied into a temporary array that does not overlap src or dest, and the bytes are then copied from the temporary array to dest. It returns a pointer to dest.

Depending on whether the source and dest blocks overlap or not, memmove() behaves the same to memcpy() or a backwards memcpy() (starting the copy from the end of the block to the start). Due to this simple design, it usually is optimised together with memcpy(). libfreevec provides an AltiVec-optimised version.

Each CPU in detail:

And for comparison here is the result of the same benchmark run on an Athlon X2 5000 (2.5Ghz), running 32-bit code:

Results/Comments

The same comments done in memcpy() apply here.

SIMD