使用 Intel Vtune 分析数据包处理应用程序。
仅此指令中的时间利用率低
add $0x100, %r8 (7%)
单次if检查时间利用率低
if(unlikely(VALUE == some_value)
这个 some_value 是 uint16_t 并作为 (int*)&some_value 传递,如果有帮助,可以作为 (uint8_t*)some_value 进一步访问。
映射到以下
movzxw 0x3e(%rsp),%eax
test %ax,%ax ---- Leads in poor time utilization
jz Block x
将变量推送到堆栈的函数中的时间利用率低,而其他函数推送相同的变量并占用更少的时间
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbp
pushq %rbx
sub $0x48, %rsp
movq %rsi, 0x18(%rsp)
在内存访问分析、分支错误预测分析等中显示相同的问题。不明白如何克服这个问题