gpt4 book ai didi

如何使用 AsParallel()/Parellel.ForEach() 的 C# 编码指南

转载 作者:太空宇宙 更新时间:2023-11-03 11:11:27 24 4
gpt4 key购买 nike

我想计算 10 000 个文本的 Jaccard 相似度。Jaccard 相似度很容易计算:交集的长度除以并集的长度。

string sTtxt1 = "some text one";
string sTtxt2 = "some text two";
string sTtxt3 = "some text three";
HashSet<string[]> hashText= new HashSet<string[]>();
hashText.Add(sTtxt1);
hashText.Add(sTtxt2);
hashText.Add(sTtxt3);
double[,] dSimilarityValue;

for (int i = 0; i < hashText.Count; i++)
{
dSimilarityValue[i, i] = 100.00;
for (int j = i + 1; j < dSimilarityValue.Count; j++)
{
dSimilarityValue[i, j] = (double) hashText.ElementAt(i).Intersect(hashText.ElementAt(j)).Count() / (double) hashText.ElementAt(i).Union(hashText.ElementAt(j)).Count();
}
}

对于 .NET4,我应该使用什么规则来并行化?

谢谢!

最佳答案

只是让内循环平行于

Parallel Class

Parallel.For(0, N, i =>
{
// Do Work.
});


Parallel.For(j, dSimilarityValue.Count, i =>
{
dSimilarityValue[i, j] =
(double)hashText.ElementAt(i).Intersect(hashText.ElementAt(j)).Count() /
(double)hashText.ElementAt(i).Union(hashText.ElementAt(j)).Count();
});

而且我认为在new中声明Array的大小会更好。
不知道你所说的“规则”是什么意思。

关于如何使用 AsParallel()/Parellel.ForEach() 的 C# 编码指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13892636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com