同一个exe分别从命令行和VS2005启动程序:计算函数执行的时间差在2个情况下存在太大的差异?

逸萌 CSDN会员 逸萌 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
const int gnLoopCounts = 40000;

void testFreeAsStack(PMalloc _alloc, PFree _free)
{
vector<void*> vctPointer;
vctPointer.reserve(gnLoopCounts);

int i=0;
for (; i<gnLoopCounts; ++i)
{
void* pMem = _alloc(i+1);
if (NULL != pMem)
{
vctPointer.push_back(pMem);

memset(pMem, 0, i+1);
}
}

for (i=vctPointer.size()-1; i>=0; --i)
{
_free(vctPointer[i]);
}
}
不管是Debug还是Release都存在此现象, 在_alloc, _free中计算2个函数的时间,并累加。

以Release为例子,结果如下:

A:
从VS2005启动生成的exe:
分配与释放的总时间 = 5.897秒!

B:
从命令行启动VS2005生成的exe:
分配与释放的总时间 = 0.25秒!

问题描述:
1. 为什么A和B存在如此大的差别?
2. 用户在windows下执行exe是像A还是B?
...全文
评论 2
收藏 已收藏
分享
返回顶部
逸萌 CSDN会员
C++ 语言 65,214 成员 250,514 内容