Performance Test – String.Contains vs String.IndexOf vs Regex.IsMatch

To find out if a string contains a piece of substring, here are three simple ways of going about it in C#, just to name a few:

Out of curiosity I wanted to see if there was any noticeable difference in the performance of each of these options.

Given a simple string “Mary had a little lamb”, let’s find out how long it takes to test whether or not this string contains the terms ‘little’ (the match case) and ‘big’ (the no match case) using each of these approaches, repeated over 100k times:

image

As you can see, Regex.IsMatch is by far the slowest option in this test, although using RegexOptions.Compiled yielded slightly faster execution time. What was also interesting is that String.Contains turned out to be significantly faster than String.IndexOf.

If you take a look at the implementation for String.Contains in a reflector you will see:

image

So that explains the difference between the execution times for String.Contains and String.IndexOf, and indeed if I change the String.IndexOf test to use StringComparison.Ordinal (default is StringComparison.CurrentCulture) then I get an identical result to String.Contains.

With all that said, String.Contains and String.IndexOf is only useful for checking the existence of an exact substring, but Regex is much more powerful and allows you to do so much more. However, you do end up paying for them even when you don’t need those additional capabilities!

Enjoy what you’re reading? Subscribe to my newsletter and get more content on AWS and serverless technologies delivered straight to your inbox.


Yan Cui

I’m an AWS Serverless Hero and the author of Production-Ready Serverless. I have run production workload at scale in AWS for nearly 10 years and I have been an architect or principal engineer with a variety of industries ranging from banking, e-commerce, sports streaming to mobile gaming. I currently work as an independent consultant focused on AWS and serverless.

You can contact me via Email, Twitter and LinkedIn.

Hire me.


Check out my new course, Complete Guide to AWS Step Functions.

In this course, we’ll cover everything you need to know to use AWS Step Functions service effectively. Including basic concepts, HTTP and event triggers, activities, design patterns and best practices.

Get Your Copy