我希望优化这段代码以计算字符串列表中出现次数的数量。具体来说,我有两个列表:
1)cat:一个包含重复项(必须存在)的大量字符串列表。
2)cat_unq:从cat中提取的不同元素。
目前我的代码循环遍历cat_unq中的所有唯一元素,并计算重复列表中唯一元素出现的次数。搜索在移动设备上运行。
我已经尝试使用数组代替列表,但性能稍微提高了一些,但并不足够。
另一种尝试是使用foreach parallel进行并行搜索,但性能不稳定。
以下是我当前正在使用的代码:
1)cat:一个包含重复项(必须存在)的大量字符串列表。
2)cat_unq:从cat中提取的不同元素。
目前我的代码循环遍历cat_unq中的所有唯一元素,并计算重复列表中唯一元素出现的次数。搜索在移动设备上运行。
我已经尝试使用数组代替列表,但性能稍微提高了一些,但并不足够。
另一种尝试是使用foreach parallel进行并行搜索,但性能不稳定。
以下是我当前正在使用的代码:
private List<int> GetCategoryCount(List<string> cat, List<string> cat_unq)
{
List<int> cat_count = new List<int>();
for (int i = 0; i < cat_unq.Count; i++)
cat_count.Add(cat.Where(x => x.Equals(cat_unq[i])).Count());
return cat_count;
}
cat_unq
是否包含cat
的所有唯一值或其子集?如果是前者,您可以对cat
进行分组并获取每个出现次数的计数。即使是后者,也最好在cat
列表的一次遍历中获取这些计数,然后使用它按所需顺序获取计数。 - juharrcat_unq
中的所有值,然后迭代cat
中的值。 - juharrcat_unq
代表了某种期望的顺序。但实际上,这似乎几乎像是他们可能会预先获取不同的值,然后执行比所需更多的工作。 - juharr