AndroidDev 板


LINE

整篇文章寫得很棒,我想補充一些內容 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
1F:→ nvidia:好文! 04/25 07:11
2F:推 e98877331:push! 05/05 21:43
3F:→ nowar100:我在個強而有力的證據 Angrybird 硬幣海盜 這種遊戲都有 05/12 22:02
4F:→ nowar100:用到NDK 而且不是用一點點 大部分都在Native做 05/12 22:02
5F:→ nowar100:不要說NDK效果不大 那是軟體眼界太小才不需要 要跑得順的 05/12 22:03
6F:→ nowar100:程式 很多都要靠NDK來加速的 :) 05/12 22:03







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP