Re: [討論] 到底是什麼程式會要用到NC?

看板WindowsPhone作者 (YouHua)時間12年前 (2012/06/24 13:06), 編輯推噓7(7044)
留言51則, 4人參與, 最新討論串2/2 (看更多)
原文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

06/24 20:35, , 1F
所以沒意外 重另兩個平台移植過來通常就直接NC轉一下就好
06/24 20:35, 1F

06/24 20:35, , 2F
是這樣嗎?
06/24 20:35, 2F

06/24 21:42, , 3F
不太可能,平平都是桌電,Windows與Linux都用C寫也沒那麼
06/24 21:42, 3F

06/24 21:42, , 4F
輕鬆可以換來換去...
06/24 21:42, 4F

06/24 21:45, , 5F
其實像.NET這種中間碼的,對於移植理論反而比較有利
06/24 21:45, 5F
基本上跨平台開發者基本上都使用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)

06/24 22:55, , 6F
我記得最近c#執行速度在win7上 已經比java快了
06/24 22:55, 6F

06/24 22:56, , 7F
因為ms 有做了非常多的優化 加上這幾年c#用者大量成長
06/24 22:56, 7F

06/24 22:57, , 8F
多平台開發者 通常會上下層分開 功能上兩者差不多的
06/24 22:57, 8F

06/24 22:57, , 9F
話 就會上層用同樣的code 下層在看不同call不同lib
06/24 22:57, 9F
喔!效能提升了?!有空來去測試一下,用Visual Studio 11的C#來跟JDK7比看看 ※ 編輯: sh028044 來自: 111.248.170.58 (06/24 23:06)

06/24 23:07, , 10F
我一直覺得.NET在Windows底下有主場優勢...XDDD
06/24 23:07, 10F

06/24 23:09, , 11F
C#在 Win7 上如果比 Java 快的話,那就不會比C++慢多少耶
06/24 23:09, 11F
嗯嗯絕對會有主場優勢,就像當初DirectX效能超越了OpenGL一樣 畢竟OpenGL要兼顧跨平台性,不會對Windows做特別的最佳化 ※ 編輯: sh028044 來自: 111.248.170.58 (06/24 23:19)

06/25 00:04, , 12F
diectx後來超過opengl 最主要還是近年 ms 正好是
06/25 00:04, 12F

06/25 00:04, , 13F
cg界技術的牛耳之一 shader開始就超過很多了
06/25 00:04, 13F

06/25 00:05, , 14F
opengl考慮太多 反而綁手綁腳 變成現在cg界很多名詞
06/25 00:05, 14F

06/25 00:05, , 15F
都跟著ms走
06/25 00:05, 15F

06/25 00:05, , 16F
.net 一直都是有主場優勢啊xd 而且有不少是ms直接用
06/25 00:05, 16F

06/25 00:06, , 17F
c++在實做的xdd btw 其實vm code不一定真的比nc慢
06/25 00:06, 17F

06/25 00:06, , 18F
現在很多vm的實作已經很好了 java 比c++慢 最大的
06/25 00:06, 18F

06/25 00:07, , 19F
原因還是在 回收 以及安全機制上
06/25 00:07, 19F

06/25 00:08, , 20F
這幾年c#成長快速 除了因為他通過iso等標準認證外
06/25 00:08, 20F

06/25 00:08, , 21F
甲骨文 也幫了不少忙xd (扯java後腿 冏)
06/25 00:08, 21F

06/25 00:09, , 22F
還有opengl 效能敗給d3d 還有一個理由 是相容過去
06/25 00:09, 22F

06/25 00:09, , 23F
其實多平台反而不是效能敗的理由(因為各家會好實作)
06/25 00:09, 23F

06/25 00:10, , 24F
相容過去 才是致命一擊 變成gl超多時代的眼淚在亂…
06/25 00:10, 24F
其實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)

06/25 00:34, , 25F
之前看到的測試,C++的速度差不多是 Java 的1.5倍
06/25 00:34, 25F

06/25 00:35, , 26F
不過這樣還滿想試試看 C# 到底在 Win7 上面有多快了 科科
06/25 00:35, 26F

06/25 00:36, , 27F
不過我同意沒有 Native Interface 這個限制太嚴重
06/25 00:36, 27F

06/25 01:00, , 28F
我記得近年進步很大的原因是因為 JIT 不是嗎?
06/25 01:00, 28F

06/25 01:25, , 29F
以遊戲開發商角度 倒是期待d3d 統一世界 (認真)
06/25 01:25, 29F

06/25 01:25, , 30F
另外 很多其實是因為利用gpu加速 <=但shader 對
06/25 01:25, 30F

06/25 01:26, , 31F
非cg背景的人來說 並沒有比較簡單
06/25 01:26, 31F

06/25 01:27, , 32F
你可以試試現在的vm 效能並不像傳統那樣想法 慢了
06/25 01:27, 32F

06/25 01:27, , 33F
真正慢已經在安全性跟資源上影響較多 而不再是vm
06/25 01:27, 33F

06/25 01:28, , 34F
這幾年對vm的改寫 其實還滿大的近步哦
06/25 01:28, 34F

06/25 01:28, , 35F
個人是以前在校用gl 工作因為還是做遊戲 用d3d
06/25 01:28, 35F

06/25 01:29, , 36F
心得是越簡單的東西gl越方便 越復雜的東西gl越難用
06/25 01:29, 36F
我曾經也想過最好是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)

06/25 12:42, , 37F
程式語言效能比較(最近的): http://tinyurl.com/yav2k9y
06/25 12:42, 37F
讚唷!他們都不測試一下C# windows XD,一直測C# mono @@ ※ 編輯: sh028044 來自: 61.56.8.109 (06/25 12:47)

06/25 12:49, , 38F
應該是因為他們的測試都是在 Ubuntu 的關係吧XD
06/25 12:49, 38F

06/25 16:39, , 39F
因為會比較的 都是在linux上比較多啊
06/25 16:39, 39F

06/25 16:40, , 40F
windows上 基本上就一定用ms相關的比較多
06/25 16:40, 40F

06/25 16:41, , 41F
opengl是不可能掛啦xd 因為現在的gl ms也是其中一個
06/25 16:41, 41F

06/25 16:41, , 42F
leader 而且對ms來說 他必需要一個"對手" 不然又
06/25 16:41, 42F

06/25 16:41, , 43F
會被人說話…
06/25 16:41, 43F

06/25 16:42, , 44F
遊戲開發商 傳統上 是pc/console/arcade
06/25 16:42, 44F

06/25 16:42, , 45F
而現在console這邊 至少下一代 wiiu xbox 沒意外
06/25 16:42, 45F

06/25 16:43, , 46F
是用d3d 而sony 目前有兩個乳摸 一個是用cell改
06/25 16:43, 46F

06/25 16:43, , 47F
另一個也是用d3d x86 好玩的是 都有spec 流出xdd
06/25 16:43, 47F

06/25 16:44, , 48F
pc上就不用說了 以我所知 幾個大廠寫pc/mac
06/25 16:44, 48F

06/25 16:44, , 49F
都是採上下層分開方式 下層看os 來用不同api
06/25 16:44, 49F

06/25 16:45, , 50F
現在shader code 都很相像 要轉也不是問題
06/25 16:45, 50F

06/25 16:46, , 51F
arcade還是linux多 不過也是有用embed-xp(d3d)的
06/25 16:46, 51F
嗯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)
文章代碼(AID): #1Fvg1d84 (WindowsPhone)
文章代碼(AID): #1Fvg1d84 (WindowsPhone)