C ++-初始化结构的有效方法

我和一位同事正在讨论某些方法的效率,以便将零归零struct假设我们有一个简单的struct像这样:

struct {
  int     iMyInt;
  char    cMyChar;
  double  dCoordinates[128];
} s_t;

我的方法是这样做:

s_t myStruct = { 0 };

我的同事建议这种方法:

s_t myStruct = { };

他指出,我的方法是在一个分为两部分的操作中初始化单个元素,然后初始化其余元素,而他的方法struct则是在更快,更高效的单部分操作中初始化整个元素

这是真的吗?如果是这样,在所有编译器优化级别上都是如此(即:编译器是否会解决这个问题并无论如何为我对其进行优化)?

谢谢你。

马克·A

首先,您发布的代码无效:您应按以下方式声明该结构类型

struct s_t {
  int     iMyInt;
  char    cMyChar;
  double  dCoordinates[128];
};

就是说:在您的特定情况下,两种方法是相同的,并且一切都为零。-O3甚至-O0对于铛没有差异对于其使用上述任何构件和/或阵列元件(在一个通用的测试代码-O0甚至调用memset在这两种情况下的整体结构)。

s_t obj = {0};

movq    %rcx, %rdi
movl    %eax, %esi
callq   memset

s_t obj = {};

movq    %rcx, %rdi
movl    %eax, %esi
callq   memset

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章