作者iincho (世界的盡頭)
看板Soft_Job
標題Re: [請益] java的效能!?
時間Sat May 21 10:25:02 2011
※ 引述《latw (latw)》之銘言:
: ※ 引述《stosto (樹多)》之銘言:
: : android不是跑得很順嗎?
: 那我就拿被蟲咬過的蘋果打你的臉 :D
: iOS是用obj-c 也是物件導向.順暢度?我還可以大膽的說"到目前為止",還沒有
: 一台android比蘋果順的,不信可以到各大賣場把玩一下,反正試玩不用錢.
: android還是特化的java不是標準的java.
: 再打一次臉...android從2.1->2.3把底層許多java code轉成c++ code,
: 越後面的版本,jni的數量越多...
Android會慢並不是因為用VM的關係,雖然有一點影響,
主因還是背景大家可以亂開一堆service同時跑。
iOS會順也和Objective-C沒有太大關係,主要是因為大部份的情況
並不允許使用者的程式多工。
: : 以android提供的audioAPI而言
: : 要調用好幾層從java->jni->media framework
: : (jni屬於AP framework層)....
: : media framework也是利用C++寫的,寫的也很物件導向..design patten也用的超好.....
: : 程式碼大歸大不過也算好追,也是跑得很好,而且是在那種有限的resource下
: : 除非是kernel driver那就沒話說了。但是,效能差點是一定的,不過C跟C++不會差太多
: : 不過老闆的話要聽就是了,不然就跟他說:I quit this job!
: 物件導向效能未必會比較差,看compiler.
: 不過大程式還是看演算法, java想贏asm大概也只能用演算法贏了,
: 如果都一樣的演算法,java也只能吃灰塵.
問題是考慮到維護,用C/C++的成本比asm低多了。
同樣的程式,同樣的演算法,但是開發時間可能不一樣....
: : 還有一堆老人只會寫C硬幹出來,寫的CODE一堆flag,想改一個功能要動幾千行都有可能
: : 可是這也不能怪他們,因為以前他們真的只寫C,沒想到現在需要寫APP
: : 我真的覺得要體諒他們啦....
: 這是程式設計功力與規劃的問題,linux kernel的code並不會這樣.
: 當你看過繼承再繼承,overwrite又overwrite..不用幾行你就想翻桌了:D
: java強項是跨平台,對於應付網路上充斥不同平台的電腦,這才是他的舞台.
: 拿來當用於規格幾乎一樣的桌機,只會被其他語言打臉而已,我還不知道
: 為什麼google竟然還拿來用在行動裝置這種環境更嚴苛,資源更少的地方.
: 不過最後一點倒是說對了
: 老闆說的都是對的...........(逃)
喔,主要有兩點,因為用Java VM可以很輕鬆的隔開不同的硬體,手機可不是
X86這種大家都是跑一樣的CPU,所以之前看WM的程式下載的時候都會標示
這是哪一個機型可以用的binary。雖然說現在ARM看起來有機會統一世界但是
這個決定還不算太離譜。
另外就是你提到的,Android Dalvik VM這層做的事其實很少,大部份的事都在
底下的C++層做完,加上用的硬體通常比較暴力,效能看起來是還OK。
另外幫Android Middleware這層平反一下,基本上除了Google之前買的那堆
奇怪程式(OpenCore之類的),Android Middleware這層的C++用的相當漂亮,
沒有太多不必要的overhead,而且template用的很恰當,只可惜一般系統廠
的RD通常是看不懂,我自己看到最後才赫然發現這玩意根本就是M$ ATL那一套的
梗再玩一次而已。中間這層我個人認為比之前embedded linux設計上好非常多。
不過我認為最大的問題卡在通常處理這層的RD大部份只熟悉C,所以看到那一堆
看不懂的code就...zzzz。
--
Beware of bugs in the above code;
I have only proved it correct, not tried it.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.113.63
※ 編輯: iincho 來自: 118.166.113.63 (05/21 10:30)
→ stosto:推這篇 05/21 16:29
推 loveshoo:推...看不懂直接zzz...XD... 05/21 16:55
推 GoForward:推 獲益良多, 原PO應該多發一點文章 05/22 09:13
推 ilovebbs:ATL還真的是要有一定程度的人才消化的了 05/22 11:39
→ comate:用vm其實並沒解決問題 一堆遊戲和app都還是要用ndk 05/22 19:03
→ iincho:樓上講的沒錯,所以我說Google缺乏長期規劃,看到問題 05/22 20:18
→ iincho:解問題,現在開了ndk這道門以後Android APP會很混亂.. 05/22 20:18
推 tomap41017:長期規劃說來何其容易呀,我猜google當初也沒料到現今 05/22 21:44
→ tomap41017:的局面吧!!看android版本一直修就知道了@@ 05/22 21:44
推 tomap41017:敢問middleware是指android系統中的哪個層級? 05/22 22:06
→ tomap41017:可煩請各位大大多點精確描述嗎?在android架構那張圖上 05/22 22:06
→ tomap41017:的地方是哪個位置!? 05/22 22:06
推 stosto:android是買來的,google算是一直在修正 05/23 00:15
推 forthewill:推!! 05/23 01:22
→ iincho:綠色那塊喔... 05/23 07:23
推 tomap41017:感謝:) 05/24 23:26
→ tomap41017:看來我沒想錯XD 05/24 23:26
推 SuM0m0:好客氣 05/26 10:49