小编Ale*_*bov的帖子

环路地址对齐如何影响Intel x86_64的速度?

我发现相同的C++代码的性能降低了15%,这些代码编译为完全相同的机器指令但位于不同对齐的地址上.当我的微小主循环从0x415220开始时,它比在0x415250时更快.我在Intel Core2 Duo上运行它.我在x86_64 Ubuntu上使用gcc 4.4.5.

任何人都可以解释减速的原因以及如何强制gcc最佳地对齐循环?

以下是具有探查器注释的两种情况的反汇编:

  415220 576      12.56% |XXXXXXXXXXXXXX       48 c1 eb 08           shr    $0x8,%rbx
  415224 110       2.40% |XX                   0f b6 c3              movzbl %bl,%eax
  415227           0.00% |                     41 0f b6 04 00        movzbl (%r8,%rax,1),%eax
  41522c 40        0.87% |                     48 8b 04 c1           mov    (%rcx,%rax,8),%rax
  415230 806      17.58% |XXXXXXXXXXXXXXXXXXX  4c 63 f8              movslq %eax,%r15
  415233 186       4.06% |XXXX                 48 c1 e8 20           shr    $0x20,%rax
  415237 102       2.22% |XX                   4c 01 f9              add    %r15,%rcx
  41523a 414       9.03% |XXXXXXXXXX           a8 0f …

c++ optimization gcc x86-64 intel

7
推荐指数
1
解决办法
1013
查看次数

标签 统计

c++ ×1

gcc ×1

intel ×1

optimization ×1

x86-64 ×1