Which is faster: Regex.IsMatch or String.Contains?
This blog has moved. An updated version of this post is available here.
Comments
Anonymous
June 03, 2010
Did you try Regex.Compile? msdn.microsoft.com/.../8zbs0h2f(VS.71).aspxAnonymous
June 03, 2010
The comment has been removedAnonymous
June 22, 2010
Sure. But if you're using RegexOptions.Compiled then IsMatch is actually faster. Try putting: Regex nulla = new Regex("nulla", RegexOptions.Compiled); s.Start(); //Normally we have a static Regex so it isn't fair to time the initialization (although it doesn't make a difference in this case) for (int i = 0; i < trials; i++) { bool isMatch = nulla.IsMatch(message); } I got: regex = 00:00:00.6902234 contains = 00:00:00.8815885 (during 10 trials it was consistently faster) Lesson must be that if you're searching for the same thing a lot, the dynamically compiled state machine provided by RegexOptions.Compiled is actually faster. Even if just searching for a simple string.