using System.Diagnostics;
using System.Text.RegularExpressions;
private static bool is_only_eng_letters_and_digits(string str)
if (!(ch >= 'A' && ch <= 'Z') && !(ch >= 'a' && ch <= 'z') && !(ch >= '0' && ch <= '9'))
private static readonly Regex r_only_eng_ch = new Regex(@"^[A-Z0-9]+$", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.Compiled);
private static bool is_only_eng_letters_and_digits_LINQ(string str)
return str.All(ch => (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9'));
public static void Main()
Stopwatch sw = new Stopwatch();
string eng_str = "qwerty123";
string rus_str = "qwertyФЫВА123";
for (int i = 0; i < 100000; i++)
is_only_eng_letters_and_digits(eng_str);
Console.WriteLine("Cycle time with english string: " + sw.ElapsedMilliseconds + " ms.");
for (int i = 0; i < 100000; i++)
is_only_eng_letters_and_digits(rus_str);
Console.WriteLine("Cycle time with russian string: " + sw.ElapsedMilliseconds + " ms.");
for (int i = 0; i < 100000; i++)
r_only_eng_ch.IsMatch(eng_str);
Console.WriteLine("Regex time with english string: " + sw.ElapsedMilliseconds + " ms.");
for (int i = 0; i < 100000; i++)
r_only_eng_ch.IsMatch(rus_str);
Console.WriteLine("Regex time with russian string: " + sw.ElapsedMilliseconds + " ms.");
for (int i = 0; i < 100000; i++)
is_only_eng_letters_and_digits_LINQ(eng_str);
Console.WriteLine("LINQ time with english string: " + sw.ElapsedMilliseconds + " ms.");
for (int i = 0; i < 100000; i++)
is_only_eng_letters_and_digits_LINQ(rus_str);
Console.WriteLine("LINQ time with russian string: " + sw.ElapsedMilliseconds + " ms.");