It’s just the na?ve string search implementation via a nested loop over the text and the pattern, with O(n·m) runtime.
In particular, the MSDN doesn’t specify the performance of this method so it’s not safe to assume a better performance.
Furthermore, most advanced pattern searching methods are quite specialised for certain string types and while there are better general-purpose search algorithms, implementing one in String.IndexOf
is somewhat of an unnecessary optimisation.
The reason is simple: if you require an efficient pattern search then you’ll implement your own anyway, custom-tailored to fit your particular data. So there’s no need to implement something fancy in the general-purpose library.
As of 2016 (with the Core CLR source code now available), the implementation is still using a na?ve nested loop. This is implemented in NewApis::IndexOfString
and NewApis::FastIndexOfString
, which are called (via InternalFindNLSStringEx
) from the managed String.Contains
and String.IndexOf
functions.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…