Android でモバイル アプリケーションのパフォーマンスを最大限に高めたいと考えています。電話にFPUがあるかどうかを確認するトリックを誰かが知っているかどうか知りたい.
いくつかの調査FloatMath
の結果、FPU を搭載したユニットではクラスの使用が遅くなるように思われるため、両方の長所を生かしたいと考えています。
ほとんどの新しい携帯電話には FPU が搭載されていますが、デバイスが提供できる最大のパフォーマンスを得たいと考えています。
Android でモバイル アプリケーションのパフォーマンスを最大限に高めたいと考えています。電話にFPUがあるかどうかを確認するトリックを誰かが知っているかどうか知りたい.
いくつかの調査FloatMath
の結果、FPU を搭載したユニットではクラスの使用が遅くなるように思われるため、両方の長所を生かしたいと考えています。
ほとんどの新しい携帯電話には FPU が搭載されていますが、デバイスが提供できる最大のパフォーマンスを得たいと考えています。
その下にあるのは Linux カーネルであり、少なくともデフォルトの Android 構成はマウントされprocfs
ます。つまり/proc/cpuinfo
、ARM システムでは次のように表示されます。
# 猫 /proc/cpuinfo プロセッサ: ARMv7 プロセッサ rev 3 (v7l) ボゴMIPS : 249.96 特徴:swp ハーフサム fastmult vfp edsp ネオン vfpv3 CPU 実装者: 0x41 CPU アーキテクチャ: 7 CPUバリアント: 0x1 CPU部:0xc08 CPUリビジョン:3 [ ... ]
" Features
" 行に少なくとも がリストされている場合vfp
、ARM SoC には FPU があります。
Dalvik/Java インターフェイスを介して、通常のファイルと同じように読み取ることができ/proc/cpuinfo
、特権アクセスなどは必要ありません。私は Java プログラマーではないので、それは演習として読者に任せます。
これは非常に古いスレッドですが、グーグルでここにたどり着いた私のような人にとっては、これが役立つかもしれません. ここでは、Java の方法が既に与えられているため、NDK (C++) を使用してそれを行う方法を示しています。
NDK を使用してcpu-features.hをインクルードすることで、多くの API と事前定義されたマクロを利用して、FPU の可用性を検出できます。
32 ビットプロセッサの場合は、 、 、 、または のいずれかをチェックしANDROID_CPU_ARM_FEATURE_VFPv3
てANDROID_CPU_ARM_FEATURE_VFPv2
、ANDROID_CPU_ARM_FEATURE_VFP_D32
プロセッサANDROID_CPU_ARM_FEATURE_VFP_FP16
がFPU で武装していることを確認する必要がありますANDROID_CPU_ARM_FEATURE_VFP_FMA
。android_getCpuFeatures()
64 ビットの場合は、ANDROID_CPU_ARM64_FEATURE_FP
フラグを確認してください。
android_getCpuFamily()
さらに、 CPU ファミリ/アーキテクチャ (ARM/MIPS、32/64 ビットなど) を取得するために呼び出します。
cpufeatures ライブラリ マニュアルには、プロジェクトに含めて使用するためのすべてが含まれています。