Intel Vtune を使用したパケット処理アプリケーションの分析。
この命令だけでは時間の使用率が低い
add $0x100, %r8 (7%)
1 回の 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)
メモリアクセス解析、分岐予測ミス解析などで同じ問題が発生する。この問題を解決する方法がわからない