3 ms·
Note that, if memory serves correctly, many vendors just alias memcpy to memmove anyways, because the performance is pretty similar and the bugs prevented are s
by angersock 12y ago
Note that, if memory serves correctly, many vendors just alias memcpy to memmove anyways, because the performance is pretty similar and the bugs prevented are super annoying.
- jandrese 12y agoIt's fun to benchmark memmove and memcpy on a box to see if memcpy has more optimizations or not. On Linux x86_64 gcc memcpy is usually twice as fast when you're not bound by cache misses, while both are roughly the same on FreeBSD x86_64 gcc. Linux (2.4Ghz Xeon X3430): ./memtest 10000 1000000 memcpy took 0.575571 seconds memmove took 1.082038 seconds FreeBSD (2.0Ghz AMD Athlon64 3000): ./memtest 10000 1000000 memcpy took 1.487334 seconds memmove took 1.442741 seconds
- TrainedMonkey 12y agoI am sure that different memory controllers and CPU specific of optimizations of Intel vs AMD play a small role as well.
- lbenes 12y agoWhat memtest are you using? This one: https://github.com/UK-MAC/WMTools/blob/master/tests/memtest.c https://github.com/UK-MAC/WMTools/blob/master/tests/memtest....
- jandrese 12y agoIt's one I wrote myself to test this very thing after reading the memmove manpage. I was wondering why you would ever use memcpy unless it had a big performance advantage, so I wrote a micro-benchmark to see. If you are really interested, I can put my benchmark program up somewhere. Additional findings: Unsurprisingly using clang instead of gcc does not affect performance on FreeBSD or Linux.
- lbenes 12y agoYes please. If you want share it, I'm curious how different compilers and architectures handle memmove vs memcpy.