C/400

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 をセットするように
すれば大幅なパフォーマンス改善を行うことができるのである。