我尝试编写BBS生成器。但是这台发电机太慢了。所以我需要并行。但我不知道怎么做。请帮我:)。
public static List<BigInteger> GenerateFullCycle(long N, long x0)
{
List<BigInteger> randomNumbers = new List<BigInteger>();
var bbs = new BBS_generator(N, x0);
BigInteger rvalue = bbs.Generate();
while(randomNumbers.Contains(rvalue) == false)
{
randomNumbers.Add(rvalue);
rvalue = bbs.Generate();
}
return randomNumbers;
}
答案 0 :(得分:0)
您可能希望首先考虑改进算法。 randomNumbers
列表有多大? Contains
在较大的列表上相当慢。您可能希望改为使用HashSet
。
BBS很慢,就这么简单。使用BigInteger
实际上没有任何帮助 - 也很慢。
除此之外,没有办法并行化这段代码。循环的第二次迭代取决于第一次,第三次取决于第二次等等。你可以自己并行化GenerateFullCycle
调用,但这就是它。
并行化不是解决所有问题。很多东西根本不可并行化 - 你通过并行化获得了多少?快两倍?即使你设法完全分离并以100%的效率运行,4核CPU仍然只意味着你的速度是你的四倍。没错,它确实有它的应用程序,但我没看到它如何帮助BBS生成器。
性能调整的头号规则 - 个人资料。您的应用实际在哪里花费时间?
答案 1 :(得分:0)
也许你可以使用类似后台工作者的东西: http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx