我有一個字符串,我必須刪除以下字符:'\ r','\ n'和'\ t'。 我嘗試了三種不同的方式去除這些字符並對它們進行基準測試,以便我可以獲得最快的解決方案。從字符串中刪除字符的最快方法
以下是方法和執行有時間的時候我跑了他們100萬倍:
它應該是最快的解決方案,如果我有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();
是的。執行時間= 195 – ata 2010-02-02 11:38:04
順便說一句,你需要一臺新機器:P – ata 2010-02-03 07:24:17
這是一個最近的Xeon - 可能我們的基準測試只是設置不同。 – 2010-02-03 08:29:49