On Wednesday, 1 June 2016 at 13:47:10 UTC, Patrick Schluter wrote:
What I wanted to say, is that in real life, the input of the
search routine is very often run-time user provided data. Think
of search box in browsers and apps, command line parameter à la
grep, etc. The "string" search function should not
catastrophically break down on special input, like 1 character
strings, unusual Unicode or when needle==haystack. I only said
this to not lose the focus on what is being tried to be
achieved here.
It's often a danger of micro-optimization and unit test focused
development, that a lot of time and effort are spent on
improvements that are completely irrelevant when checked
against what is really needed in real world (i.e. we're full in
bike shed territory here).
That's true. We should try to optimize for the worst case, i.e.
random input. However, it is often the case that the needle is
known at compile time, e.g. things like
if (input.canFind("foo"))
There might be ways to optimize those cases at compile time.