ストリング操作の処理が、プログラムのパフォーマンスに影響を与えることがあります。
- 割り当てられたストレージにストリングを保管するときは、ストリングの開始を 8 バイトの境界に位置合わせする。
- ストリングの長さを常に把握しておく。ストリングの長さが分かっている場合は、str 関数の代わりに mem 関数を使用することができます。たとえば、memcpy が strcpy より高速なのは、文字列の終わりを検索する必要がないためです。
- ソースとターゲットがオーバーラップしないことが確かな場合には、memmove の代わりに、memcpy を使用する。これは、memcpy がソースから宛先に直接コピーするのに対し、
memmove は、ソースをメモリー内の一時ロケーションにコピーしてから、宛先にコピーすることがあるためです (ストリングの長さによります)。
- mem 関数を使用してストリングを処理するときに、count パラメーターが変数でなく定数であれば、より高速なコードが生成される。これは、短精度のカウント値の場合に特に当てはまります。
- 可能であれば、ストリング・リテラルを読み取り専用にする。こうすれば、ある種の最適化手法が改善され、同じストリングを複数回使用する場合に、メモリーの使用量が削減されます。ストリングを明示的に読み取り専用に設定することができます。ストリングを読み取り専用に設定するには、ソース・ファイルで #pragma strings (読み取り専用) を使用するか、ソース・ファイルの変更を避ける場合は、
-qro (デフォルトで使用可能になっています) を使用します。
