【发布时间】:2017-07-18 11:27:50
【问题描述】:
所以我一直在研究变量 uint8 的工作原理,我意识到它实际上并不比 int 快!为了进行乘法、除法、加法或减法,程序必须将 uint8 转换为 int,这将使其速度大致相同或稍慢。
为什么 C++ 没有直接对 uint8 实现乘除加减?
【问题讨论】:
-
优化通常是特定于平台的。在大多数平台中,CPU 架构大于 8 位。它在物理上使用大于
uint8的值。这超出了 c++ 标准的范围。 -
我怀疑这是在 32/64 位上工作的 CPU 改变了它,而不是 C++。即,编译器在针对您的平台时不能做任何事情。
-
@FrançoisAndrieux 没错,但我想知道为什么 C++ 没有直接将 uint8 加减乘除。
-
@KevinDuarte:C++ 标准并没有禁止这样的操作;事实上,它明确地允许它们。但是该标准没有定义编译器如何实现该操作。由编译器决定如何最好地为该操作生成程序集。
-
IIRC,
int是 CPU 的最佳类型。仅在创建大量对象时使用uint8_t才有用。
标签: c++ performance visual-studio