C400

61. memset による、もうひとつのパフォーマンス改善

もうひとつの効果的なパフォーマンス改善の方法は

「大きな変数に対して memset を使わない」

ということである。

例えば

char tmpbuf[12800]
memset(tmpbuf, 0, sizeof(tmpbuf));

という命令が繰り返し頻繁に行われる場合は この大きな変数 tmpbuf に対する

memset 関数の実行による速度低下は影響が出てくる。

これを

tmpbuf[0] = 0x00;

とするだけで十分な場合が多い。

この後で

strcpy(tmpbuf, "ABC");

のような strcpy があれば strcpy は最後の NULL も併せてコピーするので

tmpbuf には正しい「ABC」という値が入る。

このように大量の memset を止めて 先頭バイトだけに 0x00 をセットするように

すれば大幅なパフォーマンス改善を行うことができるのである。