-1

Linux の x86 CPU でどの操作が高速になるか、および平均的な違い (%):

unsigned int x, y, z;
x = y / z;

また:

double x, y, z;
x = y / z;

double の操作は FPU によって実行され、CPU は他のコマンドを続行できます。それが正しいか?コンパイル フラグに依存しますか (フラグを指定して gcc を使用してい-O3ます)。

4

3 に答える 3

3

作業が本質的に整数ベースである場合、int-floatおよびfloat-int変換は、パフォーマンス上の利点を損なう可能性があります。Cのデフォルトの変換(切り捨て)は、古いIntelチップでは特に遅くなる可能性があります。

それとは別に、あなたのアイデアには正しさの問題があり、それはおそらくそれをしない十分な理由です。

于 2010-11-14T18:04:14.320 に答える
0

個々の浮動小数点除算命令は、整数除算よりも時間がかかります。ただし、連続して多くのことを行っている場合は、パイプライン処理により、ほぼ同じ速度に達します (少なくとも最新の x86 では)。

ああ、はい、FPU がビジーである間、CPU は他の操作を行うことができます。

于 2010-11-14T17:52:11.943 に答える
0

整数演算は、通常、浮動小数点演算よりも高速です。違いは主にハードウェアに依存します。一部のプラットフォームには FPU さえありません。

このような単純な操作は、オペレーティング システムやコンパイラ フラグにまったく依存すべきではありません。これは、単純なアセンブリ命令である必要があります。

操作にかかる時間を調べる最良の方法は、プラットフォームのアセンブリ マニュアルを確認するか、ベンチマークを実行することです。

于 2010-11-14T17:52:51.757 に答える