c++ - Visual Studio 2012 中的小程序与 Visual Studio 2005 相比要慢得多

标签 c++ performance visual-c++ visual-studio-2005 visual-studio-2012

我们正在使用 Visual Studio 2005。我们正在考虑在 Visual Studio 2012 发布后升级到它。我在 Visual Studio 2012 RC 中尝试了这个小程序,并惊讶地发现它的运行速度比在 Visual Studio 2005 中慢了 2 倍以上。在 VS2012 中,我使用了默认的发布build设置。对我来说,在 VS2005 中大约需要 20ms,在 VS2012 中大约需要 50ms。为什么这么慢?

#include <windows.h>
#include <deque>

using namespace std;

deque<int> d;

int main(int argc, char* argv[])
{
    const int COUNT = 5000000;

    timeBeginPeriod(1);    

    for (int i = 0; i < COUNT; ++i)
    {
        d.push_back(i);
    }

    double sum = 0;

    DWORD start = timeGetTime();

    for (int i = 0; i < COUNT; ++i)
    {
        sum += d[i];
    }

    printf("time=%dms\n", timeGetTime() - start);

    printf("sum=%f\n", sum);

    return 0;
}

最佳答案

因此我们将这个问题重新发布到 Microsoft 论坛。 http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/72234b06-7622-445e-b359-88f572b4de52

简短的回答是,VS2012RC 中 std::deque::operator[] 的实现速度比 VS2005 慢。其他常见的 STL 容器测试为相同或更快。当 VS2012 投入生产时重新测试,看看操作符[]性能是否得到解决,这将会很有趣。

ps
嗨拉斐尔
卡尔

关于c++ - Visual Studio 2012 中的小程序与 Visual Studio 2005 相比要慢得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11144989/

相关文章:

c++ - QtConcurrent与成员函数

Python:与 MacOS 相比,Scipy 在 Windows10 上非常慢

regex - 哪种语言最适合(速度方面)运行具有大量循环和正则表达式的算法?

java - 分析 jHiccup 延迟。 57us 打嗝的来源

c++ - 什么是 IStreamPtr?

c++ - 生成一组检查消息内容的方法

c++ - IHTMLElement 到 HWnd

c++ - 自主实时人脸识别系统

c++ - 未创建新目录

c++ - 使用 C++ Catch 测试浮点 std::vector