要点:
我看到当我从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外部实现这种速度。