Optimizing libc/string for amd64(?)

From: Martin <nakal_at_nurfuerspam.de>
Date: Sun, 05 Jun 2005 02:09:53 +0200
Hello,

I ran nbench on different workstations and noticed that
amd64-platform is really bad when doing "STRINGSORT".

Sempron 2200+ (i386)  : 88 iterations/second
Athlon64 3000+ (amd64): 32.15 iterations/second

I looked inside nbench and it seems to call memmove
very often. This is OK, in my opinion, so I investigated
further.

I've just looked inside libc how memmove/memcpy is
handled there. The function is inside bcopy.c.
I noticed that the "word" which is used for copying
has the size of "int".

Wouldn't it be better to set it to "typedef long word"?
OpenBSD is using "long" there, for example, as I noticed
later.

I don't have amd64 at home, so I cannot really test
everything out. Can someone of you take a look at the
code in libc/string? There are various places that are
using "int" instead of "long", e.g. also in memset-code.

Can anyone confirm this bad performance with STRINGSORT
on amd64?

Martin
Received on Sat Jun 04 2005 - 22:56:03 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:35 UTC