[PATCH] D133660: [Support] Add fast path for StringRef::find with needle of length 2.
Tatsuyuki Ishi via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 18 08:41:05 PDT 2022
ishitatsuyuki marked an inline comment as done.
ishitatsuyuki added inline comments.
================
Comment at: llvm/lib/Support/StringRef.cpp:165
+ HaystackWord = HaystackWord << 16 | (uint8_t) * ++Start;
+ return NeedleWord == HaystackWord ? Start - Data - 1 : npos;
+ }
----------------
efriedma wrote:
> How does this compare to just the following?
>
> ```
> do {
> if (std::memcmp(Start, Needle, 2) == 0)
> return Start - Data;
> ++Start;
> } while (Start < Stop);
> return npos;
> ```
>
> Much easier to read, and the performance is probably competitive.
Thanks, memcmp is not as fast (always loads the Needle in the loop and loads 2 byte of Start instead of 1) but it should still provide sufficient benefit from inline expansion, so I've adopted the strategy.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D133660/new/
https://reviews.llvm.org/D133660
More information about the llvm-commits
mailing list