做多核优化时发现一个问题,十分诡异!

cls555 2009-06-10 04:07:35
DWORD worktime;
DWORD start,end;


printf("\n");
start = GetTickCount();
DoSomething();

end = GetTickCount();
worktime = end - start;
printf("use %lld mmsec\n", worktime);

下面是DoSomething函数
void DoSomething()
{
for(int i=0;i<10;i++)
{
//do nothing
}
}

这段代码在Debug下打印
use 0 mmsec
在Release下打印
use 201863462912 mmsec
...全文
73 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanbin23 2009-06-17
  • 打赏
  • 举报
回复
或许返回的是一个32位int,而不是64位的?有时候debug和release的一些局部存储的默认初值不大一样
seefront1 2009-06-17
  • 打赏
  • 举报
回复
从release的结果上看似乎是GetTickCount()函数没有正确工作,这个结果应该是strat、end或者worktime变量任何一个或者几个在初始化的时候产生的垃圾数据。
intel_yang 2009-06-17
  • 打赏
  • 举报
回复
试了一下,没法重现这个问题。
fanbin23 2009-06-13
  • 打赏
  • 举报
回复
Release下的DoSomething基本上应该被inline并被remove掉了。有没有看compiler commentary的工具看一下就知道了。
cls555 2009-06-10
  • 打赏
  • 举报
回复
代码前面用了 task_scheduler_init init; 及时注释掉也不影响结果,看来和多核应该关系不大
也许和inter的编译器有关

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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