1. ホーム
  2. c++

[解決済み] 符号なし整数と符号あり整数の性能比較

2023-05-10 17:42:34

質問

符号付き整数より符号なし整数の方が性能が良いのでしょうか?

もしそうなら、これはshortとlongにも当てはまりますか?

どのように解決するのですか?

2の累乗による除算は unsigned int を使用すると、1 つのシフト命令に最適化できるため、より高速です。また signed int では、通常より多くのマシン命令を必要とします。 をゼロに向けて丸めるからです。 に丸められますが、右へシフトすると . 例.

int foo(int x, unsigned y)
{
    x /= 8;
    y /= 8;
    return x + y;
}

以下は、関連する x の部分です(符号付き分割)。

movl 8(%ebp), %eax
leal 7(%eax), %edx
testl %eax, %eax
cmovs %edx, %eax
sarl $3, %eax

そして、以下が該当する y の部分です(符号なし分割)。

movl 12(%ebp), %edx
shrl $3, %edx