[PATCH] msvcrt: Import memmove from musl
Piotr Caban
piotr.caban at gmail.com
Thu Aug 20 06:35:09 CDT 2020
Hi Fabian,
I'm still looking on possible ways of optimizing the function. You patch
is only affecting a subset of memmove calls. It also slows down some
cases a lot (around 1.5-2 times). I don't have ready code yet but it
looks like it will be possible to write C implementation that is ~10%
slower than native.
Also quick testing shows that gcc and clang optimizes a simple
implementation very well. Something like:
https://source.winehq.org/patches/data/191083
(it's incorrect, I didn't mean to send it to wine-devel yet) has similar
performance as native if -O2 option is used. The same implementation is
terribly slow if -O0 is used.
I'm not sure yet how complicated the code that is not depending on
compiler to optimize it will be. I'm planning to implement some proof of
concept patch to check it next.
I'm hoping that we will come with a better patch but here are few
comments about your patch:
- the __GNUC__ checks are not needed
- the WT alias is not needed
- it doesn't work correctly in d==s case on invalid pointers / write
watches
- it decreases performance a lot if buffers overlap or word copying
patch is not used
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). It should be
possible to optimize this case as well.
Thanks,
Piotr
More information about the wine-devel
mailing list