【发布时间】:2013-05-08 12:16:49
【问题描述】:
C/C++ 中的类型转换会导致额外的 CPU 周期吗?
我的理解是,至少在某些情况下应该消耗额外的 CPU 周期。就像从浮点类型转换为整数一样,CPU 需要将浮点结构转换为整数。
float a=2.0;
int b= (float)a;
我想了解它会/不会消耗额外 CPU 周期的情况。
【问题讨论】:
-
这取决于演员表的类型。
-
既然你已经标记了这个 C++,我建议使用 C++ 风格的演员表,即
static_cast<T>、dynamic_cast<T>、reinterpret_cast<T>和const_cast<T>。 -
即使排除所有与语言相关的细节和细节,演员表是否“免费”也可能高度依赖于平台。例如,在 x86 上,从较大类型到较小类型的大多数整数转换都是免费的,但在具有不同特征的其他平台上可能并非如此。
-
+1 好问题,@JoeGauterin
(size_t)int(通常用于循环时的 malloc)会消耗额外的 cicles 吗? -
@DavidRF:取决于您的本地平台上如何定义
size_t和int,以及编译器上的优化器有多好。如有疑问,请检查组件。
标签: c++ c performance