Schnellste Methode zum entfernen von chars aus dem string

Ich habe einen string, aus dem ich zu entfernen folgenden char: '\r', '\n' und '\t'.
Ich habe versucht, drei verschiedene Wege, um diese zu entfernen char und getestet Sie, so kann ich Holen Sie sich die Schnellste Lösung.

Folgenden sind die Methoden und es Ausführungszeit, wenn ich lief Sie 1000000 mal:

Sollte es werden Schnellste Lösung, wenn ich 1 oder 2 char zu entfernen. Aber als ich in char mehr, es beginnt zu mehr Zeit in Anspruch nehmen

str = str.Replace("\r", string.Empty).Replace("\n", string.Empty).Replace("\t", string.Empty);

Ausführungszeit = 1695

Für 1 oder 2 char, das war langsamer als String.Ersetzen, aber für 3 char es zeigte sich eine bessere Leistung.

string[] split = str.Split(new char[] { '\t', '\r', '\n' }, StringSplitOptions.None);
str = split.Aggregate<string>((str1, str2) => str1 + str2);

Ausführungszeit = 1030

Die langsamste von allen, sogar mit 1 char. Vielleicht ist mein regulärer Ausdruck nicht der beste ist.

str = Regex.Replace(str, "[\r\n\t]", string.Empty, RegexOptions.Compiled);

Execution time = 3500

Dies sind die drei Lösungen, die ich kam mit. Gibt es eine bessere und schnellere Lösung, dass hier jemand weiß, oder irgendwelche Verbesserungen kann ich in diesem code?

String, dass ich für benchmarking:

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();
InformationsquelleAutor ata | 2010-02-02
Schreibe einen Kommentar