7

Android でモバイル アプリケーションのパフォーマンスを最大限に高めたいと考えています。電話にFPUがあるかどうかを確認するトリックを誰かが知っているかどうか知りたい.

いくつかの調査FloatMathの結果、FPU を搭載したユニットではクラスの使用が遅くなるように思われるため、両方の長所を生かしたいと考えています。

ほとんどの新しい携帯電話には FPU が搭載されていますが、デバイスが提供できる最大のパフォーマンスを得たいと考えています。

4

2 に答える 2

9

その下にあるのは 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 プログラマーではないので、それは演習として読者に任せます。

于 2011-11-23T18:05:39.307 に答える
1

これは非常に古いスレッドですが、グーグルでここにたどり着いた私のような人にとっては、これが役立つかもしれません. ここでは、Java の方法が既に与えられているため、NDK (C++) を使用してそれを行う方法を示しています。

NDK を使用してcpu-features.hをインクルードすることで、多くの API と事前定義されたマクロを利用して、FPU の可用性を検出できます。

32 ビットプロセッサの場合は、 、 、 、または のいずれかをチェックしANDROID_CPU_ARM_FEATURE_VFPv3ANDROID_CPU_ARM_FEATURE_VFPv2ANDROID_CPU_ARM_FEATURE_VFP_D32プロセッサANDROID_CPU_ARM_FEATURE_VFP_FP16がFPU で武装していることを確認する必要がありますANDROID_CPU_ARM_FEATURE_VFP_FMAandroid_getCpuFeatures()

64 ビットの場合は、ANDROID_CPU_ARM64_FEATURE_FPフラグを確認してください。

android_getCpuFamily()さらに、 CPU ファミリ/アーキテクチャ (ARM/MIPS、32/64 ビットなど) を取得するために呼び出します。

cpufeatures ライブラリ マニュアルには、プロジェクトに含めて使用するためのすべてが含まれています。

于 2017-11-05T06:30:13.643 に答える