文脈から外してこの質問に答えることは不可能です。さらに、丸めやオーバーフローなど、整数演算と浮動小数点演算のプロパティにより、5*j/4
一般に と同じ結果は得られません。(int) (1.25*j)
プログラムが主に整数演算を行っている場合、j
浮動小数点への変換、1.25 による乗算、および整数への逆変換は、他の方法では使用されない浮動小数点ユニットを使用するため、無料である可能性があります。
あるいは、一部のプロセッサでは、オペレーティング システムが浮動小数点状態を無効としてマークする場合があります。そのため、プロセスが最初にそれを使用するときに例外が発生し、オペレーティング システムは浮動小数点レジスタ (別の値を含む) を保存します。プロセス)、プロセスのレジスタを復元または初期化し、例外から戻ります。これには、通常の命令の実行に比べて、かなりの時間がかかります。
答えは、プログラムが実行されている特定のプロセッサ モデルの特性、オペレーティング システム、コンパイラがソースをアセンブリに変換する方法、さらにはシステム上の他のプロセスが何を実行しているかによっても異なります。
5*j/4
また、ほとんどの場合、 とのパフォーマンスの差は(int) (1.25*j)
小さすぎて、プログラム内でそれまたはそのような操作が何度も繰り返されない限り、目立ちません。(もしそうなら、コードをベクトル化すること、つまり、多くの最新のプロセッサーの単一命令複数データ [SIMD] 機能を使用して一度に複数の操作を実行することには、大きな利点がある可能性があります。)