Re: [討論] 到底是什麼程式會要用到NC?
原文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
06/24 20:35, 1F
→
06/24 20:35, , 2F
06/24 20:35, 2F
→
06/24 21:42, , 3F
06/24 21:42, 3F
→
06/24 21:42, , 4F
06/24 21:42, 4F
→
06/24 21:45, , 5F
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
06/24 22:55, 6F
→
06/24 22:56, , 7F
06/24 22:56, 7F
→
06/24 22:57, , 8F
06/24 22:57, 8F
→
06/24 22:57, , 9F
06/24 22:57, 9F
喔!效能提升了?!有空來去測試一下,用Visual Studio 11的C#來跟JDK7比看看
※ 編輯: sh028044 來自: 111.248.170.58 (06/24 23:06)
→
06/24 23:07, , 10F
06/24 23:07, 10F
推
06/24 23:09, , 11F
06/24 23:09, 11F
嗯嗯絕對會有主場優勢,就像當初DirectX效能超越了OpenGL一樣
畢竟OpenGL要兼顧跨平台性,不會對Windows做特別的最佳化
※ 編輯: sh028044 來自: 111.248.170.58 (06/24 23:19)
推
06/25 00:04, , 12F
06/25 00:04, 12F
→
06/25 00:04, , 13F
06/25 00:04, 13F
→
06/25 00:05, , 14F
06/25 00:05, 14F
→
06/25 00:05, , 15F
06/25 00:05, 15F
→
06/25 00:05, , 16F
06/25 00:05, 16F
→
06/25 00:06, , 17F
06/25 00:06, 17F
→
06/25 00:06, , 18F
06/25 00:06, 18F
→
06/25 00:07, , 19F
06/25 00:07, 19F
→
06/25 00:08, , 20F
06/25 00:08, 20F
→
06/25 00:08, , 21F
06/25 00:08, 21F
→
06/25 00:09, , 22F
06/25 00:09, 22F
→
06/25 00:09, , 23F
06/25 00:09, 23F
→
06/25 00:10, , 24F
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
06/25 00:34, 25F
→
06/25 00:35, , 26F
06/25 00:35, 26F
→
06/25 00:36, , 27F
06/25 00:36, 27F
推
06/25 01:00, , 28F
06/25 01:00, 28F
推
06/25 01:25, , 29F
06/25 01:25, 29F
→
06/25 01:25, , 30F
06/25 01:25, 30F
→
06/25 01:26, , 31F
06/25 01:26, 31F
→
06/25 01:27, , 32F
06/25 01:27, 32F
→
06/25 01:27, , 33F
06/25 01:27, 33F
→
06/25 01:28, , 34F
06/25 01:28, 34F
→
06/25 01:28, , 35F
06/25 01:28, 35F
→
06/25 01:29, , 36F
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
06/25 12:42, 37F
讚唷!他們都不測試一下C# windows XD,一直測C# mono @@
※ 編輯: sh028044 來自: 61.56.8.109 (06/25 12:47)
推
06/25 12:49, , 38F
06/25 12:49, 38F
→
06/25 16:39, , 39F
06/25 16:39, 39F
→
06/25 16:40, , 40F
06/25 16:40, 40F
→
06/25 16:41, , 41F
06/25 16:41, 41F
→
06/25 16:41, , 42F
06/25 16:41, 42F
→
06/25 16:41, , 43F
06/25 16:41, 43F
→
06/25 16:42, , 44F
06/25 16:42, 44F
→
06/25 16:42, , 45F
06/25 16:42, 45F
→
06/25 16:43, , 46F
06/25 16:43, 46F
→
06/25 16:43, , 47F
06/25 16:43, 47F
→
06/25 16:44, , 48F
06/25 16:44, 48F
→
06/25 16:44, , 49F
06/25 16:44, 49F
→
06/25 16:45, , 50F
06/25 16:45, 50F
→
06/25 16:46, , 51F
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)
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
討論
11
31