もうひとつの効果的なパフォーマンス改善の方法は
「大きな変数に対して memset を使わない」
ということである。
例えば
char tmpbuf[12800] memset(tmpbuf, 0, sizeof(tmpbuf));
という命令が繰り返し頻繁に行われる場合は この大きな変数 tmpbuf に対する
memset 関数の実行による速度低下は影響が出てくる。
これを
tmpbuf[0] = 0x00;
とするだけで十分な場合が多い。
この後で
strcpy(tmpbuf, "ABC");
のような strcpy があれば strcpy は最後の NULL も併せてコピーするので
tmpbuf には正しい「ABC」という値が入る。
このように大量の memset を止めて 先頭バイトだけに 0x00 をセットするように
すれば大幅なパフォーマンス改善を行うことができるのである。