此方法使用字符串數組中最頻繁的單詞。 對於大型數組,它的工作速度非常緩慢(例如70.000字符串的時間長度爲190.000毫秒)。 我測量(使用秒錶()),它的第一部分是最慢的一個:加速使用c中的大字符串數組工作#
public static List<WordDouble> MostFrequentWords(double count, string[] words)
{
var wordsAndNumbers = new List<WordDouble>();
foreach (var word in words)
{
if (wordsAndNumbers.Exists(e => e.Word == word.ToLower()))
wordsAndNumbers[wordsAndNumbers.FindIndex(e => e.Word == word.ToLower())].Count++;
else
{
var addWord = new WordDouble();
addWord.Word = word.ToLower();
addWord.Count = 1;
wordsAndNumbers.Add(addWord);
}
}
/*method goes on, other parts work fast and do not need improvement */
...
return something;
}
public class WordDouble
{
public string Word;
public double Count;
}
我怎樣才能改善這種方法的表現呢?
[CodeReview.SE]會您的問題更好的地方。 –
您是否聽說過[Dictionary](https://msdn.microsoft.com/en-us/library/xfhwa508)? – Rawling
不是說它會產生巨大的差異,而是爲'word.ToLower()'創建一個變量,並在使用它的3個位置使用該變量 – Johan