[英]Android NDK performance over regular Java code
我最近一直在玩 NDK,因為 UI 需要計算密集型算法的有效實現。 NDK 文檔指出:
NDK 的典型候選對象是獨立的、CPU 密集型操作,不會分配太多 memory,例如信號處理、物理模擬等。 簡單地重新編碼一個方法以在 C 中運行通常不會導致性能大幅提升。
我的是一種信號處理算法(自適應濾波器,如果你熟悉的話),具有數百萬線性運算的計算密集型計算(無法顯示代碼,但數百萬線性運算幾乎可以總結出來)。 當我使用 JNI 和 Java 實現相同的代碼時,幾乎沒有性能提升。 事實上,兩者都需要完全相同的時間,在不確定性范圍內,所以現在我不確定我是否應該只使用 Java 來處理其他所有事情。 相比之下,他們都需要大約 8 秒來完成任務。
當 JNI 中實現的算法比 Java 運行得更快時,是否有更好的標准? 有沒有人有一個表現真正引人注目的例子?
例如:將 1 到 1,000,000 的自然數相加。 代碼如下:
unsigned int sum = 0;
for(int i = 1; i <= 1000000; ++i) {
sum += i;
}
如果上面的代碼是用java編碼的,大概耗時200ms左右。 但是在jni中用c編碼時,耗時僅30ms左右。 你可以試一試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.