So whenever I write code I always think about the performance implications. I’ve often wondered, what is the “cost” of using a memcopy relative to other functions in terms of performance?
For example, I may be writing a sequence of numbers to a static buffer and concentrate on a frame within the buffer, in order to keep the frame once I get to the end of the buffer, I might memcopy all of it to the beginning OR I can implement an algorithm to amortize the computation.
memcpy is generally optimized to maximize memory bandwidth of large copies. Of course, it’s not as fast as avoiding a copy completely, and for short copies of fixed size, direct assignment may be faster since memcpy has extra code to deal with odd lengths.
But when you need to copy a block of memory, it’s hard to beat memcpy. It’s highly portable and most compilers go to great lengths to make it fast, whether that’s using SIMD instructions or maybe inlining.