为什么使用 unsigned short 比使用 int 慢?

Geo*_*ian 4 c++ types

这个网页上,对 unsigned short state 的评论:

用于减少内存使用(尽管与使用 int 相比,生成的可执行文件可能更大并且可能更慢

为什么是这样?

Tho*_*lik 5

我认为“可能更慢”这个词太难了。

一个理论事实是:

计算至少以int大小完成,例如

short a = 5;
short b = 10;
short c = a + b;
Run Code Online (Sandbox Code Playgroud)

此代码片段包含 3 个隐式转换。ab转换为int和添加。其结果是从转换回intshort。你无法避免它。C++ 中的算术至少使用int大小。这称为整数提升。

实际上,编译器会避免大多数转换。优化器也会移除很多转化。

  • 但所有这些转换都是假设的。结果必须与计算结果相匹配,就好像已经进行了这些转换一样。实际上,它们通常可以完全省略,具体取决于 CPU 架构。 (4认同)