gpt4 book ai didi

c++ - 无符号与有符号整数的性能

转载 作者:IT老高 更新时间:2023-10-28 12:13:57 25 4
gpt4 key购买 nike

使用无符号整数而不是有符号整数是否有任何性能增益/损失?

如果是这样,这是否也适用于短期和长期?

最佳答案

使用 unsigned int 的 2 次方除法更快,因为它可以优化为单个移位指令。对于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

关于c++ - 无符号与有符号整数的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4712315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com