从Visual Studio调试器启动程序比从外部启动它更快

时间:2015-05-12 07:19:14

标签: c++ debugging visual-studio-2013 release

要点:

我看到当我从Visual Studio(F5)运行程序时,进行了一对乘法运算:

x64:3.8~ms

Win32:4.5~ms

然而,当我从外面跑来时,他们采取了:

x64:6.59~ms

Win32:6.62~ms

有谁知道为什么会这样?

更多信息:

我想测试glm库的矩阵乘法速度,并用哈希映射,向量和数组迭代它们中的一些。 (计算用于渲染的变换矩阵)

因此,使用QueryPerformanceCounter,我测试了50000次乘法对1000次以获得平均时间。 (默认Visual Studio 2013空项目发布配置)

通常人们会期望程序在Visual Studio外部运行时更快,所以我也尝试了以程序方式设置程序优先级,这没有任何区别。

要想一个示例循环,如下所示:

    timer.start();
    for (int j = 0; j < 1000; j++)
    {
        for (int i = 0; i < objectsVector.size(); i++)
        {
            if (objectsVector[i]->mMeshRefID > 0)
            {
                results[i].worldTransformationMatrix = objectsVector[i]->getWorld();
                results[i].mMeshRefID = objectsVector[i]->mMeshRefID;
            }
        }
    }
    timer.getTimeDiff();

如果有人想看看或尝试完整的代码链接在这里: https://www.dropbox.com/s/xilydyvp3lublrk/matmult.zip

P.S:我也发现了这个链接,我认为这是无关紧要的,因为我没有DLL: Program runs slower when launched outside of Visual Studio

P.P.S:两台Windows 8 PC给出了相同的结果,而Windows 7 PC下的时间相同(从Visual Studio运行得慢一点(0.8~ms),应该是这样)

更多:我用我自己的代码替换了glm,代码表示矩阵为浮点数组,而时间更好,从Visual Studio运行仍然快得多。我仍然不知道如何从Visual Studio外部实现这种速度。

0 个答案:

没有答案