2017-03-24 68 views
-1

我正在開發一個處理圖像的android應用程序。我之前試過android ndk,所以我可以本地編碼來加速性能。但我停止使用它,因爲我不能完全理解C語言。確實android ndk加速硬件?

因此,我使用Java代碼繼續我的應用程序開發。我尋找更簡單更好的解決方案,以加速我的應用程序的性能,而不使用本機代碼,並取得了成功。

過了一段時間,我意識到ndk並沒有從我的項目中刪除。我刪除它,並重新編譯我的代碼,所以我可以刪除cpp文件夾。但是,當我測試我的應用程序,它變得非常slowwwwww ...我再次鏈接ndk,現在圖像處理又快了。

我的問題是,這是怎麼發生的?

+0

您應該發佈[最小,完整且可驗證的示例](https://stackoverflow.com/help/mcve),以說明您描述的行爲。 – Michael

回答

0

對於處理圖像,通常C/C++在桌面上比Java提供更好的圖像輸出。

在Android中進行編程時,我也看到了C/C++ Android NDK代碼提供了更好的圖像輸出並且比Android Java代碼更快。

這可能是因爲C/C++代碼直接符合本機代碼,其中java編譯爲字節代碼,而字節代碼通過JNI符合本地代碼。

而在NDK中,.so文件是由應用程序二進制接口(ABI)通過應用程序機器代碼直接與系統在運行時交互創建的。