簡體   English   中英

Android NDK 性能優於常規 Java 代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM