小编LML*_*LML的帖子

memset的速度Vs直接赋值为零

请考虑下面的结构定义.

struct xyz {
  char a;
  void *ptr;
  uint16_t num1;
  uint32_t num2;
  uint64_t num3;
};
Run Code Online (Sandbox Code Playgroud)

我可以通过以下三种方式之一将此结构的实例初始化为零.

  1. 在申报时

    struct xyz instance = { 0 };
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在使用C-99功能声明它之后的某个时间.

    instance = (const struct xyz) { 0 };
    
    Run Code Online (Sandbox Code Playgroud)

3.memset (&instance, 0, sizeof (struct xyz));

典型的C结构可以由编译器添加一些填充以用于对齐目的.因此memset会将填充字节初始化为零.

我的问题是:

通常,上面的方法1或2的初始化会比方法3更快吗?保存多少CPU周期并不重要,我只是好奇1和2是否快于3.

c struct

3
推荐指数
1
解决办法
724
查看次数

标签 统计

c ×1

struct ×1