47

私はちょうどiphoneがネイティブに2倍にすることができないと聞いたので、通常のフロートよりもはるかに遅くなります。

これは本当ですか?証拠?

私のプログラムには高精度の計算が必要であり、速度に妥協する必要があるため、この問題に非常に興味があります。

4

3 に答える 3

71

iPhoneは、ハードウェアで単精度と倍精度の両方の演算を実行できます。1176(元のiPhoneとiPhone3G)では、これらはほぼ同じ速度で動作しますが、より多くの単精度データをキャッシュに収めることができます。Cortex-A8(iPhone3GS、iPhone4、iPad)では、単精度演算はVFPではなくNEONユニットで実行され、大幅に高速化されています。

集中的な浮動小数点計算を行う場合は、armv6のコンパイル設定でthumbモードをオフにしてください。

于 2009-10-26T02:03:18.583 に答える
12

このスライドショーは、なぜ良い浮動小数点がないのか、なぜあるのか(ベクトル浮動小数点ユニット)についての洞察を提供します。どうやら、浮動小数点サポートがオンになっているかどうかに影響を与える「サムモード」をチェックすることが重要です。これは必ずしも改善ではありません。アセンブリコードで正しい命令を見つける方法を示しています。

また、コードを実行する電話のバージョンによっても異なります。最新のものは、浮動小数点演算を行うのに「より有能」であるように思われます。

編集:これは、VFPとNEONSSEを使用したARMでの浮動小数点の最適化に関する興味深い記事です。

于 2009-10-26T02:04:25.097 に答える
10

ARM1176JZF-Sマニュアルには、倍精度浮動小数点数をサポートすると記載されています。体調が良いはずです。PDFドキュメントへのリンクは次のとおりです。後のiPhoneはCortexチップであり、確かに機能が低下することはないはずです。

于 2009-10-26T01:43:45.627 に答える