0

重複の可能性:
memcpy と C での代入

C で実行時に memset をゼロに設定するよりも、大きな構造体 (100 バイトなど) の自動変数をゼロに割り当てた方がパフォーマンスが向上するかどうかを知りたかったのですが、gcc コンパイラがコンパイル時に最適化できるかどうかは不明ですこれ

以下は2つのケースです

ケース 1:

void fun1()
{
   struct S y = {0};
}

ケース 2:

void fun1()
{
  struct S y;
  memset(&y, 0, sizeof(y));
}
4

2 に答える 2

4

gcc はほぼ間違いなく、これをあなたができるよりもうまく処理します。これはおそらくシステム パフォーマンスのボトルネックにはならないので、これを最適化しようとしても心配する必要はありません。

于 2012-05-06T05:51:59.877 に答える
0

これは、C での memcpy と代入のほぼ正確な複製です。

割り当ては、ほとんどの場合、メモリを直接操作するよりも優れています (さらに冗長であることは言うまでもありません)。そしてコードは、結局のところ、読み取られることを意図しています。書かれているだけではありません。

于 2012-05-06T05:56:55.140 に答える