Neil Conway writes:
> MemSet(): ~9.6
> memset(): ~19.5
> __builtin_memset(): ~10.00
I did my own tests with this code and the results vary wildly between
platforms. (I do not list __builtin_memset() because the results were
invariably equal to memset().)
Platform buffer memset() MemSet()
freebsd 32 5.3 4.9
freebsd 256 23.3 24.2
mingw 32 0.5 2.0
mingw 256 6.6 10.5
unixware 256 15.2 10.3
unixware 1024 29.2 34.1
cygwin 256 6.7 15.8
"freebsd" is i386-unknown-freebsd4.7 with GCC 2.95.4.
"mingw" is i686-pc-mingw32 with GCC 3.2.
"unixware" is i586-sco-sysv5uw7.1.3 with vendor compiler version 4.1.
"cygwin" is i686-pc-cygwin with GCC 2.95.3.
GCC was run as 'gcc -O2 -Wall'. (I also tried 'gcc -O3 -finline' but
that gave only minimally better results.) The SCO compiler was run as
'cc -O -Kinine -v'.
Make of those results what you will, but the current cross-over point of
1024 seems very wrong.
--
Peter Eisentraut peter_e@gmx.net