У меня есть строка, из которой я должен удалить следующие символы: '\ r', '\ n' и '\ t'.
Я пробовал три разных способа удаления этих символов и сравнивал их, чтобы получить самое быстрое решение.
Ниже приведены методы и время выполнения, когда я запускал их 1000000 раз:
Это должно быть самое быстрое решение, если мне нужно удалить 1 или 2 символа. Но когда я добавляю больше символов, это начинает занимать больше времени
str = str.Replace("\r", string.Empty).Replace("\n", string.Empty).Replace("\t", string.Empty);
Время выполнения = 1695
Для 1 или 2 символов он был медленнее, чем String.Replace, но для 3 символов он показал лучшую производительность.
string[] split = str.Split(new char[] { '\t', '\r', '\n' }, StringSplitOptions.None);
str = split.Aggregate<string>((str1, str2) => str1 + str2);
Время выполнения = 1030
Самый медленный из всех, даже с 1 символом. Может быть, мое регулярное выражение не самое лучшее.
str = Regex.Replace(str, "[\r\n\t]", string.Empty, RegexOptions.Compiled);
Время выполнения = 3500
Это три решения, которые я придумал. Есть ли какое-нибудь лучшее и быстрое решение, которое кто-нибудь здесь знает, или какие-либо улучшения, которые я могу сделать в этом коде?
Строка , которую я использовал для бенчмаркинга:
StringBuilder builder = new StringBuilder();
builder.AppendFormat("{0}\r\n{1}\t\t\t\r\n{2}\t\r\n{3}\r\n{4}\t\t\r\n{5}\r\n{6}\r\n{7}\r\n{8}\r\n{9}",
"SELECT ",
"[Extent1].[CustomerID] AS [CustomerID], ",
"[Extent1].[NameStyle] AS [NameStyle], ",
"[Extent1].[Title] AS [Title], ",
"[Extent1].[FirstName] AS [FirstName], ",
"[Extent1].[MiddleName] AS [MiddleName], ",
"[Extent1].[LastName] AS [LastName], ",
"[Extent1].[Suffix] AS [Suffix], ",
"[Extent1].[CompanyName] AS [CompanyName], ",
"[Extent1].[SalesPerson] AS [SalesPerson], ");
string str = builder.ToString();