1

我有一段简单的代码,它通过考虑所有可能的边并随机选择要添加到文件中的边来生成随机图(基于参数 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 vs. vs110)。任何想法为什么随机数生成器在 VS2012 中变得如此糟糕?还是我做错了什么?

无论哪种方式 - 除了回到 vs2010 之外,我还能做什么......?

谢谢。

4

0 回答 0