我有一段简单的代码,通过考虑所有可能的边缘并随机选择要添加到文件中的哪些边来生成随机图(基于参数p - 添加每个边的机会)。算法如下所示:
for (unsigned int i = 0; i < nodeCount; ++i)
{
for (unsigned int j = i+1; j < nodeCount; ++j)
{
uniform_int_distribution<> d(0, 999999);
int randNum = d(randEngine);
if (randNum < p * 1000000)
{
//code that adds the edge to the file
}
}
}
我曾经在vs2010上编译这段代码,当创建50000个节点和p = 0.00002的图形时,需要大约26秒。我现在升级到vs2012,编译,我得到~74秒!几乎是时间的三倍!
我隔离了运行速度较慢的部分 - 它似乎是随机数生成(我注释掉了上面没有包含的代码,写入了文件,记录了相同的时间)。
项目定义完全相同(除了平台 - vs100与vs110)。任何想法为什么随机数发生器在VS2012中变得如此糟糕?或者是我做错了什么?
无论哪种方式 - 除了回到vs2010之外我该怎么办??
感谢。