看板 WindowsPhone 關於我們 聯絡資訊
原文43 1.用C/C++做底層,可跨iOS、Android、WM、Linux、Unix、Windows 手機的SDK允許可以呼叫自己的寫的NativeCode,就會很好移植 效能也不會相差懸殊。 2. 桌機的OS都有支援,沒差所以就不討論了。 3. 用.NET開發本身並不會有甚麼問題,當下到WP時,功能是直接被 抽掉,沒有函式庫給你呼叫。 當.NET不對其裝置做支援的時候,就可以靠自己撰寫NativeCode ,把功能補上。 但WP7 SDK的狀況,WP7不允許一般開發者使用自己寫的NativeCode, 如果直接轉換成C#,效能就會低落很多。 硬是要上的結果,文章在編號3235有說明。 C#語言的層級就像Java一樣,屬於類編譯程式語言 比直譯式程式快,比編譯式程式慢。 大部分使用C#盡量還是要使用.NET函式庫,因為本身.NET函式庫就是 NativeCode。 單純比執行效能跟Java比的話Java至少有快C#4倍(以前的記憶) 這就跟C#的Virtual Machine有很大的關聯,必竟Java已經是個戰場 老兵了。C#要更快還要一段時間的淬鍊。 C#開發WP開發速度很快是沒錯,不過是基於.NET都幫你寫好的狀況下 文章3243有.NET不支援的小舉例。 開發者的話當然不會跟M$一起砍掉重練XD 其實.NET有超多不支援現在的WP7,所以當實際下去寫的時候 發現咦??怎麼空空如也XD 以前WM還可以自己寫NativeCode補上,不過M$連這招都封住了。 好啦,其實這篇因該算是賺文章數無誤,因為小弟記得 發這種類似的文很多次了,自己一直發也感到很歹勢捏XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.248.170.58
friedpig:所以沒意外 重另兩個平台移植過來通常就直接NC轉一下就好 06/24 20:35
friedpig:是這樣嗎? 06/24 20:35
james732:不太可能,平平都是桌電,Windows與Linux都用C寫也沒那麼 06/24 21:42
james732:輕鬆可以換來換去... 06/24 21:42
james732:其實像.NET這種中間碼的,對於移植理論反而比較有利 06/24 21:45
基本上跨平台開發者基本上都使用GCC編譯器,windows上就是mingw mac與Unix就是使用llvm的GCC編譯器,配合跨平台函式庫 來開發跨平台的應用程式。 比如像socket網路通訊協定的函式庫就會做一個抽象結構或 抽象類別(亦是抽象層或編譯前處理)將不同系統分開,根據系統套板就好了。 接著比如開發Windows的,拿Visual studio arm編譯器編譯成dll 這樣windows版本函式庫就移植完成了,當然不一定要透過C#這層 因為WP7的話只能用C#,所以才需要編譯成C#可呼叫的函式庫 透過解鎖這樣WP7就可以跑NativeCode,不過目前丟上去市集 M$也不會給你過就對了XD ※ 編輯: sh028044 來自: 111.248.170.58 (06/24 22:05) 不過非跨平台的開發者就不需要這麼費工,全部使用.NET就ok了 ※ 編輯: sh028044 來自: 111.248.170.58 (06/24 22:11)
icarus0508:我記得最近c#執行速度在win7上 已經比java快了 06/24 22:55
icarus0508:因為ms 有做了非常多的優化 加上這幾年c#用者大量成長 06/24 22:56
icarus0508:多平台開發者 通常會上下層分開 功能上兩者差不多的 06/24 22:57
icarus0508:話 就會上層用同樣的code 下層在看不同call不同lib 06/24 22:57
喔!效能提升了?!有空來去測試一下,用Visual Studio 11的C#來跟JDK7比看看 ※ 編輯: sh028044 來自: 111.248.170.58 (06/24 23:06)
james732:我一直覺得.NET在Windows底下有主場優勢...XDDD 06/24 23:07
arrenwu:C#在 Win7 上如果比 Java 快的話,那就不會比C++慢多少耶 06/24 23:09
嗯嗯絕對會有主場優勢,就像當初DirectX效能超越了OpenGL一樣 畢竟OpenGL要兼顧跨平台性,不會對Windows做特別的最佳化 ※ 編輯: sh028044 來自: 111.248.170.58 (06/24 23:19)
icarus0508:diectx後來超過opengl 最主要還是近年 ms 正好是 06/25 00:04
icarus0508:cg界技術的牛耳之一 shader開始就超過很多了 06/25 00:04
icarus0508:opengl考慮太多 反而綁手綁腳 變成現在cg界很多名詞 06/25 00:05
icarus0508:都跟著ms走 06/25 00:05
icarus0508:.net 一直都是有主場優勢啊xd 而且有不少是ms直接用 06/25 00:05
icarus0508:c++在實做的xdd btw 其實vm code不一定真的比nc慢 06/25 00:06
icarus0508:現在很多vm的實作已經很好了 java 比c++慢 最大的 06/25 00:06
icarus0508:原因還是在 回收 以及安全機制上 06/25 00:07
icarus0508:這幾年c#成長快速 除了因為他通過iso等標準認證外 06/25 00:08
icarus0508:甲骨文 也幫了不少忙xd (扯java後腿 冏) 06/25 00:08
icarus0508:還有opengl 效能敗給d3d 還有一個理由 是相容過去 06/25 00:09
icarus0508:其實多平台反而不是效能敗的理由(因為各家會好實作) 06/25 00:09
icarus0508:相容過去 才是致命一擊 變成gl超多時代的眼淚在亂… 06/25 00:10
其實VM code近年有進步很多但是還是卡在Virtual Machine這個執行器 因為Virtual Machine就是要解決相容性的問題,就誠如您所講的需要顧及 較多的因素,因此效能還是差C/C++很多,畢竟C/C++不需要再透過 Virtual Machine這層,或是更刁鑽的方式在C內部內嵌組合語言 直接控制CPU做運算。 至於VM Code沒有比較慢的方面是因為呼叫了NC code函式庫的緣故 會跳過Virtual Machine去執行。 嗯雖然OpenGL這樣犧牲了效能,不過帶給了很多非Windows OS很多貢獻 甚至可將遊戲無痛搬移到Windows,這還蠻值得的 ※ 編輯: sh028044 來自: 111.248.170.58 (06/25 00:52)
arrenwu:之前看到的測試,C++的速度差不多是 Java 的1.5倍 06/25 00:34
arrenwu:不過這樣還滿想試試看 C# 到底在 Win7 上面有多快了 科科 06/25 00:35
arrenwu:不過我同意沒有 Native Interface 這個限制太嚴重 06/25 00:36
arrenwu:我記得近年進步很大的原因是因為 JIT 不是嗎? 06/25 01:00
icarus0508:以遊戲開發商角度 倒是期待d3d 統一世界 (認真) 06/25 01:25
icarus0508:另外 很多其實是因為利用gpu加速 <=但shader 對 06/25 01:25
icarus0508:非cg背景的人來說 並沒有比較簡單 06/25 01:26
icarus0508:你可以試試現在的vm 效能並不像傳統那樣想法 慢了 06/25 01:27
icarus0508:真正慢已經在安全性跟資源上影響較多 而不再是vm 06/25 01:27
icarus0508:這幾年對vm的改寫 其實還滿大的近步哦 06/25 01:28
icarus0508:個人是以前在校用gl 工作因為還是做遊戲 用d3d 06/25 01:28
icarus0508:心得是越簡單的東西gl越方便 越復雜的東西gl越難用 06/25 01:29
我曾經也想過最好是D3D統一遊戲市場,不過 D3D要統一的話也還是很有難度啦,因為畢竟很多廠商都需要做跨平台這件事 尤其實MacOS的開發商,OpenGL要掛掉因該蠻困難的 Java效能雖然不錯,但當初公司內部開會被排除了 因為有很多人就是會跟你多計較那0.0x ms的速度 因為都用伺服器跑超大量的運算 就算到windows寧願重新build,也不想用java C#雖然Linux可以用C# mono但是C# mono效能本身比windows C#更慢 因為公司有很多Unix與Linux的伺服器,windows與mac反而佔少數 因為機器很多所以老闆就要用Linux與Unix省授權費QQ 程式語言效能比較http://ppt.cc/Qs2q 不過這是很久以前的數據了,有人有找到2012的嗎? 裡面的java都還在jdk6 ※ 編輯: sh028044 來自: 61.56.8.109 (06/25 12:37)
arrenwu:程式語言效能比較(最近的): http://tinyurl.com/yav2k9y 06/25 12:42
讚唷!他們都不測試一下C# windows XD,一直測C# mono @@ ※ 編輯: sh028044 來自: 61.56.8.109 (06/25 12:47)
arrenwu:應該是因為他們的測試都是在 Ubuntu 的關係吧XD 06/25 12:49
icarus0508:因為會比較的 都是在linux上比較多啊 06/25 16:39
icarus0508:windows上 基本上就一定用ms相關的比較多 06/25 16:40
icarus0508:opengl是不可能掛啦xd 因為現在的gl ms也是其中一個 06/25 16:41
icarus0508:leader 而且對ms來說 他必需要一個"對手" 不然又 06/25 16:41
icarus0508:會被人說話… 06/25 16:41
icarus0508:遊戲開發商 傳統上 是pc/console/arcade 06/25 16:42
icarus0508:而現在console這邊 至少下一代 wiiu xbox 沒意外 06/25 16:42
icarus0508:是用d3d 而sony 目前有兩個乳摸 一個是用cell改 06/25 16:43
icarus0508:另一個也是用d3d x86 好玩的是 都有spec 流出xdd 06/25 16:43
icarus0508:pc上就不用說了 以我所知 幾個大廠寫pc/mac 06/25 16:44
icarus0508:都是採上下層分開方式 下層看os 來用不同api 06/25 16:44
icarus0508:現在shader code 都很相像 要轉也不是問題 06/25 16:45
icarus0508:arcade還是linux多 不過也是有用embed-xp(d3d)的 06/25 16:46
嗯i大你這邊提到的上層就是抽象層,就是可將程式碼寫成一樣的api 而不是真的api,這層維護好,要移植就很簡單了 在編譯的時候這層會去負責自動對應OS的實際繪圖api arcade會用XP因該是懶得移植到Linux上吧XD? 不過每台xp arcade都需要有微軟授權, 不過因該是還好,arcade幾乎都不會更新 ※ 編輯: sh028044 來自: 61.56.8.109 (06/26 12:33) ※ 編輯: sh028044 來自: 111.248.171.162 (06/26 20:17)