老是攻擊Zenfone的 Intel x86 相容性,也太過時了

這個問題我之前也有在ptt上問過
經過討論似乎是認為
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:
這個問題我之前也有在...(恕刪)


個人覺得還是很保留

光app這一塊就比較讓人擔心了...

fwekj wrote:
這個問題我之前也有在...(恕刪)


其實我也不是很懂,不過就我所知的有限資訊裡,
ART 模式僅是用來取代 Dalvik VM,
要執行 ARM binary 同樣需要 Intel 的 Houdini。

所以 APP 開發者使用 NDK 開發 APP 的時候,
如果只編譯了 ARM 平台用的 binary,
那麼依舊還是需要 Houdini 來讓 x86 可以執行。

ART 模式所影響到的似乎只是 Java code 的部分?
DIXES wrote:
其實我也不是很懂,不...(恕刪)

也是啦 其實還是要上市了才知道
又或者是有會寫app的大大來解說一下
剛剛把APK用rar解壓縮來看 發現有個叫classes.dex的檔案
舉例來說 skype的apk裡有個叫classes.dex的檔 也有個lib的資料夾是armv7
查了一下classes.dex似乎是dalvik虛擬器可讀取的指令
不知art模式是不是直接和這個相關??

這個網站寫的還滿不錯的
http://blog.mssun.me/technology/android-art-runtime-3-compiler/
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版本。
都會造成閃退問題。
只有大廠的熱賣手機或旗艦手機,才能最快得到廠商的青睞。


actt wrote:
由於java先天上速...(恕刪)

大大解釋的太好了
現在的問題大概就是
Intel用 art來跑java 會不會比用胡迪尼轉譯arm來的有效率和省電了~
但不管怎嚜樣可能還是不及arm跑arm native code的app?
我來說個比喻好了

你是公司的老闆,最近你請了兩位新專才

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)

Weirdoxlee wrote:
我來說個比喻好了你是...(恕刪)

但我看滿多app也是用 arm native code
Skype line fb 至少我常用的這幾個都是的樣子 都有 lib/armeabi 資料夾
Weirdoxlee wrote:
我來說個比喻好了你是...(恕刪)


相當貼切與非常容易理解的比喻!

Intel 可以跑 x86 + ARM(透過 Houdini)
ARM 只能跑 ARM

以上指的是執行 Native code 的部分。

所以感覺上 Intel 似乎比較有優勢,
不過(目前)大概也不會有 APP,
只支援 x86 而不支援 ARM 的情況吧?

因此就算 ARM 不能跑 x86 的 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.

這樣才是最佳解。
文章分享
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 15)

今日熱門文章 網友點擊推薦!