"char"和"small int"比"int"慢吗?

Art*_*wan 8 c c++ compiler-construction processor

可能重复:
内置类型的性能:char vs short vs int vs. float vs. double

你好.假设您有32位处理器.8位char和16位short int类型比原生32位慢int吗?那么使用64位long long int呢?

默认情况下硬件是否支持此数据类型,或者通过使用其他指令将它们全部转换为32位数据?

如果我必须存储少量的字符,将它们存储为整数是不是更快?

R..*_*R.. 6

在任何现代、实用的机器上,charint、 和long都会很快(可能同样快)。shortcpu架构之间甚至单个架构中不同的cpu模型之间是否快速都会有所不同。

话虽如此,确实没有充分的理由为单个变量使用小类型,而不管它们的速度如何。它们的语义令人困惑(由于默认促销为int),并且它们不会为您节省大量空间(甚至可能没有任何空间)。我唯一一次使用char, short, int8_t,int16_t等是在必须匹配固定二进制布局的数组或结构中,您将拥有如此多的二进制布局(例如像素或音频样本),以至于每个的大小实际上事项。

  • @Spidey:我建议不要在你的意思是 `bool` 或 `char` 的地方使用 `int`。使用您需要的类型。 (6认同)
  • 我太偏向于极简设计,认为这是正确的。哈哈。从现在开始我会尝试使用这个。 (2认同)
  • 另请注意,签名很重要。例如,Arm 长期以来一直有字节的快速“加载和零扩展”指令,但对字节的快速“加载和符号扩展”的支持仅在更高版本中添加,并且具有更多限制性寻址。 (2认同)