C++11 聚合和构造函数速度比较
C++11 Aggregates & constructors speed comparison
默认构造函数、复制构造函数和移动构造函数[=22=的速度如何? ] 相互比较 聚合 类型,例如存储内置类型元素的 std::array
?
直觉上,我会说 move > default > copy(越大越快)。
对吗?
std::array
的 default 构造函数持有一个内置函数(例如 float
、int
等)将是最快的,其次是 move 和 copy(速度相当)。
std::array
是一个集合,因此 default 构造函数不执行任何操作。如 cppreference
所述
note that default initialization may result in indeterminate values for non-class T
请注意,由于这些是内置函数,因此移动和复制在性能方面完全相同,因为移动内置函数的速度不能比复制它快。
所以对于 std::array
,顺序是 default > move == copy.
这不一定适用于包含非内置函数的聚合,但适用于仅包含内置函数的聚合或其他仅包含内置函数的聚合。
默认构造函数、复制构造函数和移动构造函数[=22=的速度如何? ] 相互比较 聚合 类型,例如存储内置类型元素的 std::array
?
直觉上,我会说 move > default > copy(越大越快)。
对吗?
std::array
的 default 构造函数持有一个内置函数(例如 float
、int
等)将是最快的,其次是 move 和 copy(速度相当)。
std::array
是一个集合,因此 default 构造函数不执行任何操作。如 cppreference
note that default initialization may result in indeterminate values for non-class T
请注意,由于这些是内置函数,因此移动和复制在性能方面完全相同,因为移动内置函数的速度不能比复制它快。
所以对于 std::array
,顺序是 default > move == copy.
这不一定适用于包含非内置函数的聚合,但适用于仅包含内置函数的聚合或其他仅包含内置函数的聚合。