Skip to content

Instantly share code, notes, and snippets.

@pawlos
Created August 8, 2017 18:17
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save pawlos/9643dd72926d902b6276052fd712a27f to your computer and use it in GitHub Desktop.
BenchmarkDotNet demo of email check
public class Program
{
[Params("ok@ok.pl", "dolores.ryba@poczta-n.pl", "dolores.ryba@poczta.odlotowa.pl", "dolores.ryba@a.b.c.d.pl", "psikus@dot.dot.dot..pl", "@", "", null, "bad@", "@wolf", "@poczta.pl", "cokolwiek")]
public string EmailAddress { get; set; }
[Benchmark]
public void TryCatch()
{
try
{
MailAddress m = new MailAddress(EmailAddress);
}
catch
{
}
}
private static Regex Simple = new Regex(@"^\S+@\S+$", RegexOptions.Compiled);
[Benchmark]
public void RegexSimple()
{
Simple.IsMatch(EmailAddress);
}
private static Regex Complex = new Regex(@"(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|""(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f] |\\[\x01-\x09\x0b\x0c\x0e-\x7f])*"")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])", RegexOptions.Compiled);
[Benchmark]
public void RegexComplex()
{
Complex.IsMatch(EmailAddress);
}
static void Main(string[] args)
{
var summary = BenchmarkRunner.Run<Program>();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment