こんにちは、私の JNI ライブラリに問題があります。同じコードの実行時間は、電話機ごとに異なります。古い電話でテストしていたからだと思っていましたが、最近htcの伝説で実行し、すべてのjniコードが遅かった...
プロファイラーを実行すると、実際には昼と夜の違いがあります。一部の電話では、jni 関数は 15% から 20% かかりますが、他の電話では同じ条件で 40% と 50% かかります...
誰か説明がありますか?
こんにちは、私の JNI ライブラリに問題があります。同じコードの実行時間は、電話機ごとに異なります。古い電話でテストしていたからだと思っていましたが、最近htcの伝説で実行し、すべてのjniコードが遅かった...
プロファイラーを実行すると、実際には昼と夜の違いがあります。一部の電話では、jni 関数は 15% から 20% かかりますが、他の電話では同じ条件で 40% と 50% かかります...
誰か説明がありますか?
電話機の1つがForyo(2.2)で追加されたJIT(Just In Time)コンパイラを使用している場合、それよりもはるかに高速であるはずです。同じAndroidバージョンを使用してテストしていますか?
それとは別に、一部のデバイスは他のデバイスよりも浮動小数点演算に優れています。FPUを実装していないデバイスは、浮動小数点演算をエミュレートします。ここでそれについての素晴らしいブログ投稿を見つけることができます:http ://www.badlogicgames.com/wordpress/?p=71 。
固定小数点演算を使用して浮動小数点システムを実装する方法については、さまざまな情報源があります:http: //en.wikipedia.org/wiki/Fixed-point_arithmetic
プロセッサは確かに同じように作成されていません。フィード、速度、キャッシュなどが異なります。明らかな説明は、それがプロセッサであるということです。
さらに、システム全体が処理に影響を与える可能性があります。たとえば、JNIを使用してカメラで撮影した画像を処理する場合、画像のサイズはデバイス固有である可能性があります。
さらに、スレッド時間と実時間を測定していることを確認する必要があります。コードのJavaである部分に関連するタイミングを見ると、JNIでの速度低下ではなく、Javaでの相対的な速度向上(Android 2.2のJITなど)が見られる場合があります。