此方法使用字符串数组中最频繁的单词。 对于大型数组,它的工作速度非常缓慢(例如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