Re: [分享] 淺談NDK
整篇文章寫得很棒,我想補充一些內容
Java 與 Native 其實沒有你說的效能差這麼少
我們實驗室有做過幾個範例,純運算不講畫圖用函數庫
用 Java 跑下去五秒,NDK 下去就是兩秒
更何況甚至 Java 是可以比 Native 慢五到十倍都是有可能的
大多程式都沒有用到 NDK 這東西,但是大多會賺錢的程式會用到它
不管你 Java 再怎麼 Event-driven,再怎麼 Just-In-Time,慢了就是慢了
但是也像您說的一樣,他不成熟,為什麼?
想想為什麼 Android 要用 Java 打天下,而非 Native Language
因為 Java 只要實作出一套虛擬機器,擺在各支手機上都可以跑
現在 NDK 不成熟的原因就是因為這樣
以 Android 的開放自由度,任何人拿到 Code 都可以任意移植
C/C++ 這種語言本身就是跟 machine-dependent
要做出可以任意手機上跑的 Native 程式,難度會比想像中的還多很多
說實在,我覺得 Google 現在能搞出這種程度的 NDK 已經算是很不錯了
想想人家 iPhone 只搞一種系統,用 Obj-C 來寫程式
Android 要全世界都可以開放,還用 Java 來當應用程式開發語言
兩者做出來的難度真的有差...
一點淺見 :)
※ 引述《Killercat (殺人貓™)》之銘言:
: 這篇比較不著重於NDK的技術面,比較像是幫助你評估為什麼要用NDK
: NDK跟JNI有什麼關係等等...
: 這篇本來是我為了教育訓練寫出來的東西,所以就將就看一下吧 :)
: -
: NDK其實他僅僅只是一組Toolchain及一小組LibC實作, 用以JNI連結上VM
: 所以其實他並沒有甚麼特異功能 :
: 他不能操作View 他不能操作Service 他其實甚麼都不能幹(正常使用下)
: 正常用途下你沒辦法用NDK寫一個View 你也沒辦法用NDK開發任何東西
: 而且大多數的情況下,你把部份Method改用NDK也不會跑的比較快
: 而且裡面的LibC其實不是非常的...完整且高效,也沒有STL給你玩
因為 libc 好搞,libstdc++ 難搞
: 更不用說Boost這些我們平常用到爽用到爛的東西,通通沒有
: 最重要的是,用NDK寫出來的東西並不會比較帥,後續開發者或者主管看到有NDK
: 不會拍拍你的頭說你好厲害,只會皺著眉頭,問「真的有必要嗎?」
: 因為他不但難以除錯
: (Native當掉是俗稱的綠當,那是一組memory dump,而不是簡單易懂的紅當)
: 而且更是增加編譯複雜度,簡直是給自己找麻煩
: 那...為什麼要用NDK呢?
: 第一點是Java本身GC的問題,他會造成很多記憶體破碎,native可以自己控制記憶體
: 這點來講,絕對有助於Heap的過度大量成長
: 第二點則是...真的有些東西會跑的比較快,像OpenGL ES的矩陣演算。不過,為什麼
是快很多 :)
矩陣開下去算個幾次,差距就出來了
當然如果你只是丟幾條指令到 Native 端跑當然沒有用
: 前面會說大多數都跑不快呢?因為JNI是有Overhead的,你增加的效能通常還不見得比
: 增加的overhead來的高。
: 第三點,你可能開發自己的ROM, 恩這時候NDK就會用很大。不過這理先不提這個...
: 最後一點也是最重要的原因,你有想用的C Library, 或者你有多平台library想用同一份
: code. 當然,你要有原始檔,不然這都是做不到的。
: 如果你看完這四點還認為你需要評估使用NDK與否,那請繼續看下去。
: 不然,請你等到真的需要的時候在好好考慮他,NDK多數情況下不是解藥,是一種劇毒毒藥
: (如果有人看到這理的話,我必須做個附註 : 2.3開始允許完全使用NDK開發Activity
: 不過這個技術方面成不成熟跟泛不泛用,我想我這邊先留個空白吧 :)
: 有興趣的人 這邊有一份demo code 看看吧~
: http://www.oschina.net/code/snippet_12_2904
: 事實上我個人認為這技術並不成熟,
: 不過我想寫出來至少可以讓人覺得比較super~一點 XD )
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.24.204.221
→
04/25 07:11, , 1F
04/25 07:11, 1F
推
05/05 21:43, , 2F
05/05 21:43, 2F
→
05/12 22:02, , 3F
05/12 22:02, 3F
→
05/12 22:02, , 4F
05/12 22:02, 4F
→
05/12 22:03, , 5F
05/12 22:03, 5F
→
05/12 22:03, , 6F
05/12 22:03, 6F
討論串 (同標題文章)
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章