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