これはばかげた質問かもしれませんが、この種の最適化によってアプリケーションのパフォーマンスが向上する場合があります。ここでは、C ++がコードをコンパイルする方法が、c#やJavaとは大きく異なるため、特にC ++を求めています。
問題は、変数iがintの場合、どちらがパフォーマンスが優れているかです。
i > -1
i >= 0
必要なメモリブロックまたはレジスタと、両方の条件に必要なCPUサイクルの観点からパフォーマンスを探しています。
前もって感謝します。
アセンブリ言語では、両方が同じ構造になっています。
i > -1
cmp [register with i value],-1
jg [somewhere]
i >= 0
cmp [register with i value],0
jge [somewhere]
使用されるジャンプフラグによると、命令jg
は2つのフラグの比較(ZF = 0およびSF = OF)を行いますが、jge
1つだけ(SF = OF)を行います。
ですから、どちらもほぼ同じレジスタとCPUサイクルを使用していると言いたくなりますが、の比較はほんの少し速いかもしれませんi >= 0
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加