- 実際に自分で確認する必要があります。私の推測では、出力されたコードに違いがあると思いますが、コンパイラとコンパイラ オプションに依存する可能性があり、
array
.
array.count
「何らかの作業」と比較して、評価はほとんど常に重要ではないという前提で、ほとんどありません。ただし、それを測定する方法は、プロファイラー (または同等のもの) を使用して、そのコード行でプログラムの実行時間のどの割合が費やされるかを観察することです。プロファイラーが正確であれば、それを変更することで得られる最大の期待値です。
常に同じ結果が返さarray.count
れることがわかっているが、コンパイラはそれを認識していない、非常に遅いものがあるとします。それなら、手動で持ち上げる価値があるかもしれません。strlen
例として使用されます。実際にどれくらいの頻度strlen
で実際に遅いかについては議論の余地がありますが、必要以上に遅くなる可能性のある例を簡単に作成できます。
char some_function(char a) {
return (a * 2 + 1) & 0x3F;
}
for (int i = 0; i < strlen(ptr); ++i) {
ptr[i] = some_function(ptr[i]); // faster than strlen for long enough strings.
}
あなたも私も、 が 0 を返さないことを知っているsome_function
ので、文字列の長さが変わることはありません。コンパイラは の定義をsome_function
認識しない可能性があり、たとえ定義を認識したとしても、ゼロ以外の戻り値が重要であることを理解していない可能性があります。