On Wednesday, 2 April 2014 at 21:18:19 UTC, Dmitry Olshansky
wrote:
03-Apr-2014 00:46, Walter Bright пишет:
On 4/2/2014 12:38 PM, Dmitry Olshansky wrote:
memchr is already optimized by SIMD, and std.algorithm.find
uses memchr.
In general, enormous effort has been poured into optimizing C
standard
library functions. If an algorithm can be implemented using
such
functions, we ought to.
This is all good and well, but...
memchr is working on the level of a single byte, leaving
nothing for 2, 4, 8 byte-wide needles. Not type-safe. No
fallback for CTFE.
I found myself needing "wmemchr" (and optionally "dmemchr") for
speeding up find for wstrings and dstrings.
I realized "wmemchr" exists, but it is platform defined: ushort
(w) on windows, and uint (d) on linux.
So it's hard to use, and definitely not the "W" version I'd
expect in D code.
If I were to request the actual "memchr"/"wmemchr"/"dmemchr"
functions in some "core.???" module, is this something we'd want,
and would somebody know how to provide an efficient
implementation?