私はちょうどiphoneがネイティブに2倍にすることができないと聞いたので、通常のフロートよりもはるかに遅くなります。
これは本当ですか?証拠?
私のプログラムには高精度の計算が必要であり、速度に妥協する必要があるため、この問題に非常に興味があります。
私はちょうどiphoneがネイティブに2倍にすることができないと聞いたので、通常のフロートよりもはるかに遅くなります。
これは本当ですか?証拠?
私のプログラムには高精度の計算が必要であり、速度に妥協する必要があるため、この問題に非常に興味があります。
iPhoneは、ハードウェアで単精度と倍精度の両方の演算を実行できます。1176(元のiPhoneとiPhone3G)では、これらはほぼ同じ速度で動作しますが、より多くの単精度データをキャッシュに収めることができます。Cortex-A8(iPhone3GS、iPhone4、iPad)では、単精度演算はVFPではなくNEONユニットで実行され、大幅に高速化されています。
集中的な浮動小数点計算を行う場合は、armv6のコンパイル設定でthumbモードをオフにしてください。
このスライドショーは、なぜ良い浮動小数点がないのか、なぜあるのか(ベクトル浮動小数点ユニット)についての洞察を提供します。どうやら、浮動小数点サポートがオンになっているかどうかに影響を与える「サムモード」をチェックすることが重要です。これは必ずしも改善ではありません。アセンブリコードで正しい命令を見つける方法を示しています。
また、コードを実行する電話のバージョンによっても異なります。最新のものは、浮動小数点演算を行うのに「より有能」であるように思われます。
編集:これは、VFPとNEONSSEを使用したARMでの浮動小数点の最適化に関する興味深い記事です。
ARM1176JZF-Sマニュアルには、倍精度浮動小数点数をサポートすると記載されています。体調が良いはずです。PDFドキュメントへのリンクは次のとおりです。後のiPhoneはCortexチップであり、確かに機能が低下することはないはずです。