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

逸萌 2013-06-28 02:53:52
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?
...全文
87 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
www_adintr_com 2013-06-28
  • 打赏
  • 举报
回复
在 VS 里是按 F5 调试启动的? 被调试起当然慢了.
赵4老师 2013-06-28
  • 打赏
  • 举报
回复
使用电脑计时有时误差会很大,因为待测程序段的运行会影响电脑时钟。 将待测程序段循环足够多次,手动掐秒表计时可能更准确。

64,637

社区成员

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

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