Linux の x86 CPU でどの操作が高速になるか、および平均的な違い (%):
unsigned int x, y, z;
x = y / z;
また:
double x, y, z;
x = y / z;
double の操作は FPU によって実行され、CPU は他のコマンドを続行できます。それが正しいか?コンパイル フラグに依存しますか (フラグを指定して gcc を使用してい-O3
ます)。
Linux の x86 CPU でどの操作が高速になるか、および平均的な違い (%):
unsigned int x, y, z;
x = y / z;
また:
double x, y, z;
x = y / z;
double の操作は FPU によって実行され、CPU は他のコマンドを続行できます。それが正しいか?コンパイル フラグに依存しますか (フラグを指定して gcc を使用してい-O3
ます)。
作業が本質的に整数ベースである場合、int-floatおよびfloat-int変換は、パフォーマンス上の利点を損なう可能性があります。Cのデフォルトの変換(切り捨て)は、古いIntelチップでは特に遅くなる可能性があります。
それとは別に、あなたのアイデアには正しさの問題があり、それはおそらくそれをしない十分な理由です。
個々の浮動小数点除算命令は、整数除算よりも時間がかかります。ただし、連続して多くのことを行っている場合は、パイプライン処理により、ほぼ同じ速度に達します (少なくとも最新の x86 では)。
ああ、はい、FPU がビジーである間、CPU は他の操作を行うことができます。
整数演算は、通常、浮動小数点演算よりも高速です。違いは主にハードウェアに依存します。一部のプラットフォームには FPU さえありません。
このような単純な操作は、オペレーティング システムやコンパイラ フラグにまったく依存すべきではありません。これは、単純なアセンブリ命令である必要があります。
操作にかかる時間を調べる最良の方法は、プラットフォームのアセンブリ マニュアルを確認するか、ベンチマークを実行することです。