Я написал небольшую программу для проверки скорости двух отдельных методов расширения, которые я создал, подробно показано на скриншоте ниже:
public static class Extensions
{
public static List<string> ParseEmails(this string[] emails, char[] charsToSplitOn)
{
List<string> list = new List<string>();
foreach (string email in emails)
{
string[] splitArr = email.Replace(" ", "").Split(charsToSplitOn, StringSplitOptions.RemoveEmptyEntries);
foreach (string item in splitArr)
{
list.Add(item);
}
}
return list;
}
public static string[] ParseEmails2(this string[] emails, char[] charsToSplitOn)
{
string str = string.Empty;
foreach (string item in emails)
{
str += item + ';';
}
return str.Replace(" ", "").Split(charsToSplitOn, StringSplitOptions.RemoveEmptyEntries);
}
}
![enter image description here](https://i.stack.imgur.com/Qj4cI.png)
Метод Main инициализирует класс Stopwatch
для отслеживания времени, которое каждый метод выполняет для выполнения iterations
раз.
Первый метод, ParseEmails
, имеет цикл for
внутри другого цикла for
в то время как второй метод 'ParseEmails2' имеет только один цикл for
.
Я бы ожидал, что тогда второй метод, ParseEmails2
, будет быстрее, поскольку, насколько я понимаю, это делается в O(n) время, тогда как мой первый метод, ParseEmails
, выполняется за время O (n ^ 2).
Если это так, то мои результаты не должны указывать на то, что ParseEmails2
быстрееиз двух методов?