我正在编写一个程序,用于计算一个已经转换成小写并由空格分隔的文本文件中单词的数量。我想使用一个字典,只有当单词在字典中时才进行计数。问题是字典相当大(约100,000个单词),而每个文本文档也有约50,000个单词。因此,我下面编写的代码会变得非常慢(在四核i7机器上处理一个文档需要约15秒)。我想知道我的代码有什么问题,是否可以提高程序的效率。非常感谢您的帮助。以下是代码:
public static string WordCount(string countInput)
{
string[] keywords = ReadDic(); /* read dictionary txt file*/
/*then reads the main text file*/
Dictionary<string, int> dict = ReadFile(countInput).Split(' ')
.Select(c => c)
.Where(c => keywords.Contains(c))
.GroupBy(c => c)
.Select(g => new { word = g.Key, count = g.Count() })
.OrderBy(g => g.word)
.ToDictionary(d => d.word, d => d.count);
int s = dict.Sum(e => e.Value);
string k = s.ToString();
return k;
}