请教一些使用vtune发现的问题,以及解决方案

erigido 2010-11-05 09:24:54
1.在函数返回 ret指令会产生大量的mispredircted branches ,函数非常简单:

fun1(v)
{
if(v != 1)
process();
else
free();
}
发现fun1在返回时,mispredircted branches在 ret指令上计数非常大,达到1000级别。

我想请教大拿们,为什么这么简单的函数会产生如此大量的mispredircted branches ,且解决方案一般是什么?
谢谢!
...全文
165 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Intel_CG 2010-11-09
  • 打赏
  • 举报
回复
1000不算大,请观测正确的比例。

mispredecated branches应该是if造成的,采样时有些slip。

减少该事件,可用Intel Compiler的 PGO选项, 用-prof-gen编译, 运行,用 -prof-use再编译即可。

567

社区成员

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

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