Вчера пришел консультант, и как-то возник вопрос о струнах. Он упомянул, что он заметил, что для строк менее определенной длины Contains
на самом деле быстрее, чем StartsWith
. Мне приходилось видеть это своими глазами, поэтому я написал небольшое приложение и, конечно, Contains
быстрее!
Как это возможно?
DateTime start = DateTime.MinValue;
DateTime end = DateTime.MinValue;
string str = "Hello there";
start = DateTime.Now;
for (int i = 0; i < 10000000; i++)
{
str.Contains("H");
}
end = DateTime.Now;
Console.WriteLine("{0}ms using Contains", end.Subtract(start).Milliseconds);
start = DateTime.Now;
for (int i = 0; i < 10000000; i++)
{
str.StartsWith("H");
}
end = DateTime.Now;
Console.WriteLine("{0}ms using StartsWith", end.Subtract(start).Milliseconds);
Выходы:
726ms using Contains
865ms using StartsWith
Я тоже пробовал его с длинными строками!