J'ai une chaîne à partir de laquelle je dois supprimer les caractères suivants: '\ r', '\ n' et '\ t'. J'ai essayé trois façons différentes de supprimer ces caractères et les ai comparés afin d'obtenir la solution la plus rapide.Le moyen le plus rapide de supprimer les caractères de la chaîne
Après sont les méthodes et il temps d'exécution quand je les ai couru 1000000 fois:
Il devrait être solution la plus rapide si j'ai 1 ou 2 car pour enlever. Mais comme je l'ai mis plus char, il commence à prendre plus de temps
str = str.Replace("\r", string.Empty).Replace("\n", string.Empty).Replace("\t", string.Empty);
Temps d'exécution = 1695
Pour 1 ou 2 char, ce fut plus lent alors String.Replace, mais pour 3 car il a montré de meilleures performances.
string[] split = str.Split(new char[] { '\t', '\r', '\n' }, StringSplitOptions.None);
str = split.Aggregate<string>((str1, str2) => str1 + str2);
Temps d'exécution = 1030
Le plus lent de tous, même avec 1 caractère. Peut-être que mon expression régulière n'est pas la meilleure.
str = Regex.Replace(str, "[\r\n\t]", string.Empty, RegexOptions.Compiled);
Temps d'exécution = 3500
Ce sont les trois solutions que je suis venu avec. Y a-t-il une solution meilleure et plus rapide que tout le monde connaisse ici, ou des améliorations que je peux faire dans ce code?
Chaîne que j'ai utilisé pour l'analyse comparative:
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();
Oui c'est. Temps d'exécution = 195 – ata
btw, vous avez besoin d'une nouvelle machine: P – ata
C'est un Xeon récent - nos benchmarks sont probablement configurés différemment. –