Flash的逆襲-CS5絕地大反攻?apple出大絕~os 4.0光劍一刀斬!

ulyssesric wrote:
一個可以在作業平台上直接原生執行,一個要透過一個低階虛擬機器執行,
等於是一台是 PC 直接灌 Windows,另一台 Mac 執行 VMware 上面灌 Windows,
這在你的邏輯裡面算是「同一支」程式嗎?

閣下指鹿為馬顛倒黑白的功力,再次另小民我等大開眼界。


你嘛幫幫忙,LLVM和VM差這麼多(不是都有VM的就差不多),到底是誰在指鹿為馬? 以系統架構來說DirectX和OpenGL和VM更相似,都在上層。LLVM在哪裡你知道嗎? 還原生勒。

ulyssesric wrote:
一個可以在作業平台上直接原生執行,一個要透過虛擬機器執行,
等於是一台是 PC 直接灌 Windows,另一台 Mac 執行 VMware 上面灌 Windows,
這在閣下的邏輯裡面算是「同一支」程式嗎?

閣下指鹿為馬顛倒黑白的功力,再次令小民我等大開眼界。

Blizzard 為了 Mac 另外寫一套程式,
Adobe 為了省工直接把兔子塞在布偶裝裡面硬說他是松鼠,
請問到底是誰有問題?


先幫你備份起來
查LLVM的同時建議您也了解一下GCC

btw,只是把相關端口修改跟製作一些APP文件...就叫寫一套新的程式
你也太認真了吧
gate2 wrote:
你嘛幫幫忙,LLVM...(恕刪)


你也幫幫忙,LLVM 不是只有 GCC-backended 唯一一種方法好不好?

你今天講的 Cross-platform 那已經是牽涉到在兩個不同平台上、使用不同作業系統、不同軟體框架來撰寫的 User mode 高階應用程式,不只是不同 CPU 的機器碼跨平台。我唯一能想到 LLVM 和這種高階應用程式「Cross-platform」能扯得上關係的,就只有利用 LLVM 產生 intermediate,再搭配一個直譯器/JIT 以「真的」虛擬機器的方式來執行。如果還有其他的方法,願聞其詳。

我承認,我不清楚 Flash player 是採用何種 Cross-platform 技術來達成。假設 Adobe 很有良心,是用某種高階語言然後搭配 LLVM-GCC 而不是 JIT 好了;LLVM-GCC 和原生 GCC 程式碼的效率相比的結果,閣下有考慮過嗎?

閣下喜歡看數據,我們就來看數據:
http://www.phoronix.com/scan.php?page=article&item=apple_llvm_gcc#=4
12 項測試中,僅 OpenSSL 4096-bits 編碼運算 LLVM-GCC 版的執行效能高過 GCC 版,其他全都是 GCC 勝出,而且差距甚大。某些項目,例如 MD5,LLVM-GCC 的效能甚至比 GCC 差 40%。

換句話說,不管它們用哪種方法,Frontend 還是 VM,對使用者來說有差嗎?全都是一個用非原生碼撰寫、未經過最佳化處理、疊床架屋搞出來的東西。而這件事你不去怪 Adobe,還能怪誰?

另外,我對於閣下所述「Flash是透過OSX的LLVM compiler來完成跨平台的使用」這件事高度存疑。

第一,目前 Flash player for Mac 版本是 10.x,於 2008 六月推出。而 Apple 對 LLVM 正式支援是在 2008 WWDC 首次揭露,同年底的 Xcode 3.1 才正式釋出。而在這之前 LLVM-GCC for Mac OS X 都只有給 10.4 或更早作業系統使用的版本。如果 Adobe 用的是這一版,那未免也 Lag 太大了吧?

第二,實際上 Flash 和 LLVM 能查詢到的唯一的關聯,除了這兩天的 CS5 新聞以外,只有一項:Alchemy C/C++ Compiler for ActionScript。這東西基本上就是利用 LLVM 編譯成 intermediate 格式,再匯入 Flash 內用 Flash 直譯器執行。換句話說,這是「讓 C/C++ 程式碼可再 Flash Player 內執行」,

第三,Adobe 目前使用 LLVM 的實例,除了上述的 ActionScript compiler 以外,只有 "Hydra" or "Pixel Bender",一個用來描述影像處理(Filter)處理程序的描述語言。

換句話說,Adobe 目前採用 LLVM 技術,當做是程式內直譯器的 intermediate 中介層,屆此來達到提昇內部直譯器執行效率的效果。有點像 fast-CGI 或 Zend-PHP 的作法。而這和閣下所謂「Flash是透過OSX的LLVM compiler來完成跨平台的使用」,顯然有一段不小的差異。

還請閣下提出「Flash是透過OSX的LLVM compiler來完成跨平台的使用」的實證,以及利用 LLVM 來達成高階應用程式「同一包程式碼」跨作業系統、而不需要使用 JIT 的詳細說明。本人十分有興趣了解詳細狀況。謝謝。

gate2 wrote:
你嘛幫幫忙,LLVM和VM差這麼多(不是都有VM的就差不多),到底是誰在指鹿為馬? 以系統架構來說DirectX和OpenGL和VM更相似,都在上層。LLVM在哪裡你知道嗎? 還原生勒。


只要是 VM, 基本上都想抽離程式碼對CPU的依賴度. 達到跨平台的目的.
天下沒免費的午餐, 這些都是要付出代價的!

這些很基本的原理, 不會因為多搞個新名詞, 就讓事情更高尚些!
ulyssesric wrote:
你也幫幫忙,LLVM 不是只有 GCC-backended 唯一一種方法好不好?

你今天講的 Cross-platform 那已經是牽涉到在兩個不同平台上、使用不同作業系統、不同軟體框架來撰寫的 User mode 高階應用程式,不只是不同 CPU 的機器碼跨平台。我唯一能想到 LLVM 和這種高階應用程式「Cross-platform」能扯得上關係的,就只有利用 LLVM 產生 intermediate,再搭配一個直譯器/JIT 來執行。如果還有其他的方法,願聞其詳。

我承認,我不清楚 Flash player 是採用何種 Cross-platform 技術來達成。假設 Adobe 很有良心,是用某種高階語言然後搭配 LLVM-GCC 而不是 JIT 好了;LLVM-GCC 和原生 GCC 程式碼的效率相比的結果,閣下有考慮過嗎?

閣下喜歡看數據,我們就來看數據:
http://www.phoronix.com/scan.php?page=article&item=apple_llvm_gcc#=4
12 項測試中,僅 OpenSSL 4096-bits 編碼運算 LLVM-GCC 版的執行效能高過 GCC 版,其他全都是 GCC 勝出,而且差距甚大。某些項目,例如 MD5,LLVM-GCC 的效能甚至比 GCC 差 40%。

換句話說,不管它們用哪種方法,Frontend 還是 VM,對使用者來說有差嗎?
全都是一個用非原生碼撰寫、未經過最佳化處理、疊床架屋搞出來的東西。

另外,我對於閣下所述「Flash是透過OSX的LLVM compiler來完成跨平台的使用」這件事高度存疑。

第一,目前 Flash player for Mac 版本是 10.x,於 2008 六月推出。而 OSX 的 LLVM 支援是在 2008 WWDC 首次揭露,同年底的 Xcode 3.1 才正式釋出。

第二,實際上 Flash 和 LLVM 能查詢到的唯一的關聯,除了這兩天的 CS5 新聞以外,只有一項:Alchemy C/C++ Compiler for ActionScript。這東西基本上就是利用 LLVM 編譯成 intermediate 格式,再匯入 Flash 內用 Flash 直譯器執行。換句話說,這是「讓 C/C++ 程式碼可再 Flash Player 內執行」,

第三,Adobe 目前使用 LLVM 的實例,除了上述的 ActionScript compiler 以外,只有 "Hydra" or "Pixel Bender",一個用來描述影像處理(Filter)處理程序的描述語言。

換句話說,Adobe 目前採用 LLVM 技術,當做是程式內直譯器的 intermediate 中介層,屆此來達到提昇內部直譯器執行效率的效果。有點像 fast-CGI 或 Zend-PHP 的作法。而這和閣下所謂「Flash是透過OSX的LLVM compiler來完成跨平台的使用」,顯然有一段不小的差異。

還請閣下提出「Flash是透過OSX的LLVM compiler來完成跨平台的使用」的實證,以及利用 LLVM 來達成高階應用程式跨作業系統、而不需要使用 JIT 的詳細說明。本人十分有興趣了解詳細狀況。謝謝。


Flash player和WOW在windows和OSX的執行是兩回事,這是我要說的重點。至於你那一堆全部要別人回答的問題,誰有那個美國時間陪你玩。
gate2 wrote:
Flash player和WOW在windows和OSX的執行是兩回事。


你講的這句話我完全同意。

然而我的重點是:「Flash Player for Windows」和「Flash Player for Mac」不是「同一瓶牛奶」。

你不願回答,表示「Flash Player for Windows 和 Flash Player for Mac 是用同一包程式碼編譯出來的」這件事未獲得證明,表示你對「不是同一瓶牛奶」的反駁也不成立。

如果你能反證,歡迎提供資料。作為一個工程師,我隨時希望取得新知。

而站在一個使用者的立場,我只看到 Blizzard 為了 Mac 平台提供了一個經過最佳化的應用程式,讓兩個平台執行效能差不多;換句話說,如果經過作業系統最佳化,同一套應用程式在 Mac 平台上的執行效能與 Windows 平台上的執行效能差距不會很大,這已得到實證。而 Adobe,卻做不到這一點。

所以我特地舉 WOW 為例就是指出這一點:Adobe 沒有認真發展 Mac 版的 Flash Player。Mac 上 Flash 效能執行低落,完全是 Adobe 的問題。
ulyssesric wrote:
但是這表示你無法證明,「Flash Player for Windows」和「Flash Player for Mac」是用「同一包程式碼」編譯出來的。

而這,才是我的重點:「Flash Player for Windows」和「Flash Player for Mac」不是「同一瓶牛奶」。

如果你能反證,歡迎提供資料。作為一個工程師,我隨時希望取得新知。


"同一瓶牛奶的問題",誰這麼傻,有現成LLVM可以用,還要為不同平台開發相同的程式?
ulyssesric wrote:
而站在一個使用者的立場,我只看到 Blizzard 為了 Mac 平台提供了一個經過最佳化的應用程式,讓兩個平台執行效能差不多;換句話說,如果經過作業系統最佳化,同一套應用程式在 Mac 平台上的執行效能與 Windows 平台上的執行效能差距不會很大,這已得到實證。而 Adobe,卻做不到這一點。

所以我特地舉 WOW 為例就是指出這一點:Adobe 沒有認真發展 Mac 版的 Flash Player。Mac 上 Flash 效能執行低落,完全是 Adobe 的問題。


你這個反證實在是差太多。 OpenGL和DirectX的執行效能是建立在"底層有專屬的硬體執行相關的指令集",也就是說你的GPU沒有支援相關的硬體或是底層driver沒有實現,一切都白搭。很多benchmark程式都可以比較,同樣的DirectX/OpenGL下,由"GPU執行指令"或是"CPU自行運算"兩者的效能差距。 Flash遇到的問題就是OSX底層實現的完整度很差,Adobe也計畫off load一些運算到GPU,但OSX下就是做不到,這種情況下,Flash player效能比windows差也就在預期中。
gate2 wrote:
Flash遇到的問題就是OSX底層實現的完整度很差,Adobe也計畫off load一些運算到GPU,但OSX下就是做不到,這種情況下,Flash player效能比windows差也就在預期中。...(恕刪)


我看你怪錯 OS X 了

根本就該怪 Jobs!
要是每台 Mac 都是配 Xeon,RAM 放大一點,哪還有什麼跑不動!

程式跑不快幹嘛 tune,都去怪 OS 跟硬體就好啦
todau wrote:
我看你怪錯 OS X 了

根本就該怪 Jobs!
要是每台 Mac 都是配 Xeon,RAM 放大一點,哪還有什麼跑不動!

程式跑不快幹嘛 tune,都去怪 OS 跟硬體就好啦


一支上層的AP,如果是本身設計的瑕疵,那它的效能在各平台會非常一致的差勁。而Flash的問題在於它在windows下的效能比OSX好,既然如此這是flash自己問題的可能性就很低。

上層AP如果tune一下就可以趕上底層硬體,那誰還要買新的VGA卡,raid控制卡這種"硬體",反正這些事CPU都可以做,AP開發者自己tune一下就可以了。

儘管很多人宣稱software決定勝負的時代來臨了,但真正內行的人都知道。還要有強大的底層才能實現並支撐上層AP開發者的創意。微軟贏Apple的OSX最多的地方就在這裡。Google也知道這點,早把發展方向往底層走,現在已經有個自己的行動裝置用的OS。Apple最有市場競爭力的產品iPhoneOS,也將擁有自己的底層硬體A4。如果底層的硬體功能都能100%實現,上層AP開發者自然可以盡情開發自己的理想。如果又是像iMac一樣,一個2008年的OpenGL 3.0搞到現在driver還沒100%實現,那誰願意在這個平台上開發自己的軟體?
文章分享
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 13)

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