看板 Soft_Job 關於我們 聯絡資訊
※ 引述《iincho (世界的盡頭)》之銘言: [我把我自己的先刪掉比較好看XD] : Android會慢並不是因為用VM的關係,雖然有一點影響, : 主因還是背景大家可以亂開一堆service同時跑。 : iOS會順也和Objective-C沒有太大關係,主要是因為大部份的情況 : 並不允許使用者的程式多工。 阿 這一點我不同意... android在初始環境(只有基本程式,即repo下來code),順暢度就差了,更別說使用者 怎麼去玩他, 再去追他的code,還真的很難相信效能會好XD ARM的CPU同時脈下效能絕對比x86差,又多一層VM,我不相信效能會比沒有VM的好, 如果不是如此,為何google每次的改版都是java轉C++, 沒有例外,更沒看過C++轉Java. 程式多不多工那是OS的事,難道iOS本身只有單線程? : 問題是考慮到維護,用C/C++的成本比asm低多了。 : 同樣的程式,同樣的演算法,但是開發時間可能不一樣.... 但是C/C++開發時間跟Java應該不會差太多吧....XD (好吧,沒指標的語言好難用,對我來說...) : 喔,主要有兩點,因為用Java VM可以很輕鬆的隔開不同的硬體,手機可不是 : X86這種大家都是跑一樣的CPU,所以之前看WM的程式下載的時候都會標示 : 這是哪一個機型可以用的binary。雖然說現在ARM看起來有機會統一世界但是 : 這個決定還不算太離譜。 ARM?我怎麼看離他原始的理念越來越遠,道是越來越接近x86的理念 << 用電換效能 >> XD 行動裝置用ARM不就是因為他省電嗎? : 另外就是你提到的,Android Dalvik VM這層做的事其實很少,大部份的事都在 : 底下的C++層做完,加上用的硬體通常比較暴力,效能看起來是還OK。 早期(例如1.6)還是用java.是後期才都改用C++....跟上面我說的一樣,還不是因為 java效能不好,不然我找不到其他的理由. 況且同樣的機子放到不同版本,"一般人"都可以"明顯"感覺順當度改變了... : 另外幫Android Middleware這層平反一下,基本上除了Google之前買的那堆 : 奇怪程式(OpenCore之類的),Android Middleware這層的C++用的相當漂亮, : 沒有太多不必要的overhead,而且template用的很恰當,只可惜一般系統廠 : 的RD通常是看不懂,我自己看到最後才赫然發現這玩意根本就是M$ ATL那一套的 : 梗再玩一次而已。中間這層我個人認為比之前embedded linux設計上好非常多。 : 不過我認為最大的問題卡在通常處理這層的RD大部份只熟悉C,所以看到那一堆 : 看不懂的code就...zzzz。 Middleware的部分沒幾個會去動吧... 慘的是上面的java code... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.237.96
stosto:我認為你沒搞懂 google為啥要使用jni 05/21 16:29
latw:除了把linux底層event轉成java可用的data以外,我真的不知道 05/21 17:31
latw:1.6到2.2的touch event都是開/dev下取玩直接轉,由java去分析 05/21 17:31
latw:2.3把分析這邊都變成C++ code.... 05/21 17:31
windows2k:WP7也是透過VM跑的, 可以觀察WP7的效能 05/21 20:25
iincho:老實說不是很想戰..XD, C++跑的一定比Java快... 05/21 20:27
iincho:問題是上層用VM是一個很不錯的選擇,尤其在手機上... 05/21 20:28
iincho:簡單來說,你根本沒搞懂為什麼Google最上面要跑VM.. 05/21 20:28
iincho:不過過去有再玩PDA的應該都知道是怎麼回事... 05/21 20:29
latw:我實在不懂還請指教.在資源有限的環境還要多個VM吃資源. 05/21 21:56
latw:加上google的一連串patch的做法都是傾向減少java往C++靠. 05/21 21:56
latw:換個角度思考好了,為什麼目前"所有"android都被抱怨流暢度? 05/21 21:58
latw:我不相信三爽/MOTO/HTC/..的RD都是白癡,不知道要怎麼調教java 05/21 21:59
latw:我也不知道"C++跑的一定比Java快"怎麼戰? XD 05/21 22:03
windows2k:VM的用途是要跨平台, 就算是ARM, 指令集也不完全相容 05/21 23:20
windows2k:現在JIT普及, 可以進一步加速 05/21 23:22
latw:喔!我大概知道了.謝謝. 05/21 23:59
iincho:你說的系統廠RD不知道怎麼調校,我可以和你說你是對的..XD 05/22 00:06
iincho:你去問那些RD Binder的架構和細節大概死八成... 05/22 00:07
iincho:這些人最熟的是底下和硬體接的那塊, 上層是甚麼可以吃嗎?? 05/22 00:07
latw:不過我還是不信,java能調到比C/C++快(逃~) 05/22 00:08
iincho:一定不會比較快,不然現在出個NDK幹嘛? 05/22 00:09
iincho:只是這種performance的損失和一個APK通吃所有機種的好處 05/22 00:10
iincho:權衡下來是可以接受的,甚至可以說非常划算.... 05/22 00:10
iincho:你有看過當年一個機種一個binary的慘狀就不會意外... 05/22 00:10
latw:那乾脆學feature phone好了,ap跑java其他都C/C++,反正系統廠 05/22 00:13
latw:會調整指令集的差異.... 05/22 00:13
latw:還是google就是正在往這個方向邁進XD 05/22 00:14