[PATCH] msvcrt: Import memmove from musl
Piotr Caban
piotr.caban at gmail.com
Thu Aug 20 12:59:48 CDT 2020
Hi Fabian,
On 8/20/20 7:13 PM, Fabian Maurer wrote:
> it would probably also be useful to benchmark the different glibc
> implementations. Because for games, 10% more speed would be nice. I doubt a C
> implementation can compete with an AVX based one.
Yes, we might need to add better (platform specific) implementation to
wine at some point. It still makes sense to improve generic code
(especially if its performance can be easily increased 2-3 times for
bigger move operations).
>> You patch is only affecting a subset of memmove calls. It also slows down
> some cases a lot (around 1.5-2 times).
>
> You mean the cases were we could use memcpy?
And the cases when buffers can't be word aligned.
>> I've also tested full implementation from musl (that uses their memcpy
> implementation in some cases). It performs much better. It's much slower than
> native if buffers overlap (around 3 times slower).
>
> musl is slower in a lot of cases. I'm attaching a cheap test program. You can
> compile it normally with "gcc" or you can link musl static with "musl-gcc".
> That should compare the best glibc implementation vs the best musl
> implementation. Correct me if I'm wrong though.
I was comparing musl, glibc and native implementation. In i386 case, on
average, glibc was the fastest one (it was e.g. ~2 times faster for big
memmove's than both musl and native msvcrt). musl was performing similar
as native msvcrt in memcpy case. When memory was copied starting from
the end musl was much slower (~3 times).
Thanks,
Piotr
More information about the wine-devel
mailing list