非常简单的问题:
我有一个程序需要对int和long long进行大量的数学计算。为了多容纳一位,我将long long变成了无符号数,因为我只处理正数并且能够获得更多的值。
奇怪的是,这给我的性能提升了15%,我确认这只是通过将所有long long变成无符号数实现的。
这可能吗?使用无符号数的数学运算真的更快吗?我记得读过没有区别,并且编译器会自动选择最快的方式,无论是有符号还是无符号。这个15%的提升真的是因为将变量变成无符号的吗,或者它可能是我代码中其他受影响的东西吗?
如果真的是因为将变量变成无符号的,那么我应该尽量将所有东西(包括ints)变成无符号的吗,因为我从不需要负数,每秒都很重要,如果我能节省时间的话。