c++ - 比较有符号比无符号整数更快

标签 c++ c performance gcc

<分区>

Possible Duplicate:
performance of unsigned vs signed integers

我在某处读到,在 x86_64 上比较 C/C++ 中的 signed intsunsigned 相比要快一点整数,例如for (int i...) 比 for (uint i...)“更快”。

这是真的吗?为什么是这样?我知道差异非常小,但无论如何。

最佳答案

你最好为这样的说法引用来源,从表面上看这很荒谬。

我们谈论的是 x86_64,这意味着现代处理器。这些 ALU 将在单个时钟周期内完成整数加法、减法和/或比较(缓存未命中当然会花费更长的时间,但仅取决于数据的大小和内存布局,而不是符号性)。甚至更少,使用 SIMD 协处理器。

我更倾向于相信这两种比较之间存在轻微的功率差异,但不是速度差异。

现在,对于特定的编译器,针对 x86_64 平台时,一种数据类型的代码生成可能比另一种数据类型更差。但那将是一个非常特殊的案例,不太可能适用于所有 x86_64 编译器。而且,我仍然怀疑缓存效应或后台进程正在影响性能测量(即使是测量每个进程花费的时间的性能计数器也会受到上下文切换使缓存无效的影响)。

关于c++ - 比较有符号比无符号整数更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8792162/

相关文章:

c - 如何在一行中初始化这个数组?

php - 使用 MySQL 或 NoSQL 数据库

c++ - 实现细节继承?

c - 未定义的对 memcpy_s 的引用

c++ - Linux - 限制每个进程的线程数

malloc 和 free 的代码

html - 如何在避免 FOMI 的同时在外部 CDN 上缓存 SVG 图标?

c# - 本地字符串变量的实例化会影响性能吗?

c++ - 选择模式下的 OpenGL 拾取

c++ - 与其他应用程序的交互