VS2013下在 性能和诊断 模式下运行速度非常快所带来的问题

zhfkt 2014-01-11 08:02:54
在vs2013 release模式下,运行如下代码会非常的慢




#include <iostream>
#include <vector>
using namespace std;

int main()
{
int loop_size = 64 * 80000;
vector<pair<double, int>* > mysize(loop_size);
for (int i = 0; i < loop_size; i++)
{
mysize[i] = new pair<double, int>();
}

cout << "new ok" << endl;

for (int i = 0; i < loop_size; i++)
{
delete mysize[i];
}

cout << "delete ok" << endl;


return 0;
}




尤其是在new完之后delete的过程,即
cout << "new ok" << endl;


cout << "delete ok" << endl;

之间的过程会非常的慢

但是如果 点击 调试 - 性能和诊断 - 启动项目 ,一路ok下去以后,程序的运行速度会非常的快,基本上就是秒出,所以希望知道的是为什么会出现这种情况。(在vs2010和vs2012下或许也有同样的问题)
...全文
556 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
vipcxj 2014-01-11
  • 打赏
  • 举报
回复
LZ发现原因了,貌似那个release调试也不是真正的完全不加辅助代码的运行,还是会加入一些乱七八糟的东西的,使用不调试运行就是性能分析的那个速度了,不过两者差那么多还是有点吃惊~
vipcxj 2014-01-11
  • 打赏
  • 举报
回复
上面那个搞错了,那个是debug的,这才是release的 4.700896s wall, 4.524029s user + 0.093601s system = 4.617630s CPU (98.2%) new ok 345.851183s wall, 342.032193s user + 0.031200s system = 342.063393s CPU (98.9%) delete ok 请按任意键继续. . . 0.555203s wall, 0.452403s user + 0.015600s system = 0.468003s CPU (84.3%) new ok 0.234508s wall, 0.234002s user + 0.000000s system = 0.234002s CPU (99.8%) delete ok 请按任意键继续. . . 这是启动性能分析的,差距好夸张~ 这是测试代码

#include "stdafx.h"

#include <iostream>
#include <boost/timer/timer.hpp>

using namespace std;
 
int main()
{
    int loop_size = 64 * 80000;
    vector<pair<double, int>* > mysize(loop_size);
	{
		boost::timer::auto_cpu_timer timer;
		for (int i = 0; i < loop_size; i++)
		{
			mysize[i] = new pair<double, int>();
		}
	}
 
    cout << "new ok" << endl;
	{
		boost::timer::auto_cpu_timer timer;
		for (int i = 0; i < loop_size; i++)
		{
			delete mysize[i];
		}
	}
 
    cout << "delete ok" << endl;
	system("pause");
    return 0;
}
vipcxj 2014-01-11
  • 打赏
  • 举报
回复
6.796715s wall, 6.552042s user + 0.124801s system = 6.676843s CPU (98.2%) new ok 356.360638s wall, 351.719855s user + 0.140401s system = 351.860255s CPU (98.7%) delete ok 请按任意键继续. . . 确实delete得好慢阿~
taodm 2014-01-11
  • 打赏
  • 举报
回复
你用的f5还是ctrl_f5?
zhfkt 2014-01-11
  • 打赏
  • 举报
回复
引用 3 楼 taodm 的回复:
换台计算机呗。更可能是你的os在搞怪。
OS是windows 8,切换到另一台windows vista, vs2010下也如此
taodm 2014-01-11
  • 打赏
  • 举报
回复
换台计算机呗。更可能是你的os在搞怪。
zhfkt 2014-01-11
  • 打赏
  • 举报
回复
引用 1 楼 taodm 的回复:
非常慢是多慢?
Intel i7-4500U 1.80GHz Haswell平台 8T内存 5分钟都没有delete完 一切到 性能和诊断 下,1秒都不用
taodm 2014-01-11
  • 打赏
  • 举报
回复
非常慢是多慢?

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧