<分区>
Possible Duplicate:
performance of unsigned vs signed integers
我在某处读到,在 x86_64
上比较 C/C++
中的 signed ints
与 unsigned 相比要快一点整数
,例如for (int i...
) 比 for (uint i...)
“更快”。
这是真的吗?为什么是这样?我知道差异非常小,但无论如何。
标签 c++ c performance gcc
<分区>
Possible Duplicate:
performance of unsigned vs signed integers
我在某处读到,在 x86_64
上比较 C/C++
中的 signed ints
与 unsigned 相比要快一点整数
,例如for (int i...
) 比 for (uint i...)
“更快”。
这是真的吗?为什么是这样?我知道差异非常小,但无论如何。
最佳答案
你最好为这样的说法引用来源,从表面上看这很荒谬。
我们谈论的是 x86_64,这意味着现代处理器。这些 ALU 将在单个时钟周期内完成整数加法、减法和/或比较(缓存未命中当然会花费更长的时间,但仅取决于数据的大小和内存布局,而不是符号性)。甚至更少,使用 SIMD 协处理器。
我更倾向于相信这两种比较之间存在轻微的功率差异,但不是速度差异。
现在,对于特定的编译器,针对 x86_64 平台时,一种数据类型的代码生成可能比另一种数据类型更差。但那将是一个非常特殊的案例,不太可能适用于所有 x86_64 编译器。而且,我仍然怀疑缓存效应或后台进程正在影响性能测量(即使是测量每个进程花费的时间的性能计数器也会受到上下文切换使缓存无效的影响)。
关于c++ - 比较有符号比无符号整数更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8792162/