經過討論似乎是認為
art模式只有好處沒有壞處 尤其是for intel的cpu而言
現行階段就是如果該app設計是並沒有特別優化 那art取代傳統delvik
不管是對於哪種cpu架構的手機而言都會省電不少 因為預先編譯
所以說對於intel會有更大的感受
因為大家之前一直詬病的就是說intel的cpu較耗電 雖然新一代的已經是22nm了~或許改善不少
如果這類型的app被art預先編譯的話 那你在開啟時就只需使用到少許的cpu運算能力,因此會省電不少
而對於那些目前是針對arm優化的app而言
啟動art模式仍然在intel平台上會有所改善,因為以往是intel的cpu需要直接在執行時轉譯程式碼
而用art時,會先把那些app轉譯過一次,所以功耗還是會少一點
但如果你說intel用art模式run那些app 跟高通的cpu跑那些針對arm優化的app而言的話
高通的效能和耗電量應該還是會較好一點~ 只是intel相較於以前非art跑時的耗電和相容性會改善
我個人覺得如果android想要整合現在凌亂的手機規格的話
或許日後會強制大家就用art來編app才能上架??
推測啦,畢竟android 5.0是強制使用art的…
所以還是期待zenfone zoom 哈哈
以上是個人的想法,待強者指正
fwekj wrote:
也是啦 其實還是要上...(恕刪)
由於java先天上速度就是比較慢(原先JAVA設計問題),
要補救的方式就是java + native code(JNI)
先提native code:
native code的意思就是不能跨平台,只能在特定平台上執行的程式。
如apk裡面lib/armv7/xxx.so 這只能在armv7的機器上執行,lib/x86/xxx.so 這只能在x86的機器上執行。
早期的apk基本上都是只有lib/arm/xxx.so,(因為x86還沒打算玩)所以x86的機器就無法執行此類apk。
但這時候就是由intel請出胡迪尼(Houdini)魔法師來變魔術把這部分的程式(lib/arm/xxx.so)轉換成x86的格式。
所以x86也可以執行arm的程式,但轉換所帶來的問題就是效能下降,這就是x86額外付出的代價。
至於java:
apk裡面的class.dex就是java的byte code.
他的特性是跨平台,為什麼跨平台?
因為java程式是需要透過另外一台機器(虛擬的機器)才能執行。
所以只要我的平台(arm ,x86)有這虛擬機器的程式就能執行class.dex。
而這台虛擬機器就是我們稱的art, dalvik。
所以如果X86的art作的效能很棒,執行純java是有優勢的,這句話是有道理的。
題外話:
其實相容性是android的最大問題。
就算是arm的機器也常有遊戲閃退等問題。
不同螢幕比例,解析度,CPU,GPU,甚至android版本。
都會造成閃退問題。
只有大廠的熱賣手機或旗艦手機,才能最快得到廠商的青睞。
我來說個比喻好了
你是公司的老闆,最近你請了兩位新專才
intel只會說日語, arm只會說英文
但你只會說中文,那怎麼辦呢?
你請來了一位翻譯(Dalvik),他只會JIT(Just in time)即時翻譯,你說甚麼,他就馬上翻譯給intel/arm。
後來,你認為這太蠢了,公司大老闆很忙的,沒可能動不動都要親自出去
。你請來了一位新翻譯(ART),你把要做的事先寫在文件上,讓ART先把東西翻譯好,
每次要做事就對翻譯說做第一/二/三...項,翻譯就會自動叫intel/arm做事。

這不就快了嗎可是再後來你認為用翻譯還是太沒效率了,因為你比較看好arm,所以跑去學英語(Native code)了。
不用翻譯,直接把英文的文件交給arm好了。


太完美了吧可是intel說我也能做arm做的事,但intel看不懂英文,結果intel跑去google translate(binary translation)把文件翻譯成日文了...

結論,只要你說的是中文,用intel/arm是沒差別的。(大多數app都是用中文的)
可是一旦你說英文,intel就只能自己翻譯了,反之一旦你說日文,arm也看不懂了。(3D game很多時候都有用native code)
DIXES wrote:
相當貼切與非常容易理...(恕刪)
不應該倒因為果
會有Houdini是為了要進入android所以才有的解決方案
之前看到的文章都說效能會降一半,native都不native了。
所以才會被嫌棄。
事實上dalvik 在intel還沒進入android市場前就已經支援x86了。
所以之前才會有android x86這些東西。只能說是intel自己的問題。
早點進場就沒問題了。
之前用unity的遊戲在x86上就是比較慢,手機也比較容易發熱就是因為沒x86的native code.
前陣子intel才跟unity講好unity android上會有X86的native code.
這樣才是最佳解。























































































