→ 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)
讚唷!他們都不測試一下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)