花在跳转指令上的时间

时间:2015-08-05 21:07:33

标签: performance assembly

在分析我的代码时,我发现在跳转指令上花费了相当大的时间(~5%);特别是jnbe 0x1800...。不幸的是,我不确定为什么跳转指​​令需要花费这么多时间(比紧接在它之前的mulsd命令更多的时间被称为相同的次数);它只是告诉处理器移动到一个特定的位置而实际上并没有做任何事情,对吗?我最好的猜测是,对于这个特定的条件,分支预测失败了,这导致这个语句花费的时间比我预期的要长。

1 个答案:

答案 0 :(得分:0)

@ EOF的评论涵盖了主要原因。 CPU性能计数器可以跟踪分支错误预测,因此您可以查看该分支是否预测不佳。

使用Linux perf或英特尔的Vtune,或其他任何可用的内容。

perf stat ./some-program  # a quick summary, not broken down by insn

perf record -e branch-misses ./some-program
perf report  # poke around at which instructions had branch misses