大家好 我遇到了我的JNI庫問題。 相同代碼的執行時間從一部手機變爲另一部手機。 我以爲那只是因爲我們在測試的舊手機上,但最近我上的HTC Legend運行,所有的JNI代碼很慢...Android:從一部手機到另一部手機的本機/ JNI代碼性能變化
我運行分析器和一個真正的白天和黑夜的區別: 上有些手機的jni功能需要15%至20%,因爲在其他手機上,需要40%和50%的相同條件...
任何人都有解釋?
大家好 我遇到了我的JNI庫問題。 相同代碼的執行時間從一部手機變爲另一部手機。 我以爲那只是因爲我們在測試的舊手機上,但最近我上的HTC Legend運行,所有的JNI代碼很慢...Android:從一部手機到另一部手機的本機/ JNI代碼性能變化
我運行分析器和一個真正的白天和黑夜的區別: 上有些手機的jni功能需要15%至20%,因爲在其他手機上,需要40%和50%的相同條件...
任何人都有解釋?
如果其中一部手機使用Foryo(2.2)中添加的JIT(Just In Time)編譯器,那麼應該比舊版本更快。你使用相同的Android版本測試它嗎?
除此之外
一些設備在浮點運算上比其他設備更好。沒有實現FPU的設備將會進行emulutae漂浮點操作。在這裏你可以找到一個很好的博客文章:http://www.badlogicgames.com/wordpress/?p=71。
有關於如何使用定點算術實現浮點系統來源普蘭蒂:http://en.wikipedia.org/wiki/Fixed-point_arithmetic
處理器當然不一樣的;他們有不同的feed,速度,緩存等等。明顯的解釋是,是的處理器。
此外,系統範圍內的事情可能會影響處理 - 如果您是使用JNI處理由相機拍攝的圖像,則圖像的大小可能是設備特定的。
此外,你必須檢查你測量線程時間和掛鐘時間;如果查看時間相對於與Java代碼的相關部分,您可能會看到Java中的相對加速(例如Android 2.2中的JIT),而不是JNI中的減速。
如果您提供了更多信息 - 您的JNI代碼的功能,設備的功能以及這些設備上的時間安排 - 我可能會根據您的具體情況猜測。 – Will 2010-10-25 09:06:26
特別是,「JNI代碼」是指「進行大量JNI調用的代碼」,還是「本地代碼」。 – fadden 2010-10-26 00:04:30
oki要更具體一些,我使用我包裝的花栗鼠物理引擎使它可以與android一起使用。所以所有的物理部分都在C中完成,並且結果被髮回到Java。 – 2010-10-26 03:25:39