游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: dl1109783

[探讨]C#开发的游戏到底慢不慢呢?

[复制链接]

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2007-11-16 02:27:00 | 显示全部楼层

Re:[探讨]C#开发的游戏到底慢不慢呢?

呵呵,这个问题已经被讨论过很多次了~

这个要从.net的机制说起了,很多人被某些教材误导,误以为.net是运行于虚拟机下的,所以执行效率肯定低,这个是个非常严重的认识错误,而且这也是.net和java最大的区别之一,.net是在程序第一次运行时,调用JIT(即时编译器)将IL中间代码编译成Native代码(也就是说会编译成跟c++编译的程序一样)然后再执行,.net库甚至提供了工具,将.net程序事先编译成Native代码编译好,放入缓存区,用于提高执行速度,这样下次运行就不需要再调用.net的JIT。

所以,c#的程序并不会比c++慢多少~

另外说下windows,大家都知道现在的Vista的前身是Longhorn,其实Longhorn的内核是基于.net的,微软本来打算推出的下一代操作系统也是基于.net上的,只不过无奈与竞争对手放出了新版系统,所以就在win2003内核基础上修改了变成了现在的Vista,不过微软仍然在着手将系统内核.net化~

国外有不少人认为,Vista 的SP1将会是内核.net化的补丁

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2007-11-16 02:37:00 | 显示全部楼层

Re:[探讨]C#开发的游戏到底慢不慢呢?

以下是节选于Chris Sells,Longhorn在MSDN上的负责人所说:
    Based On the .NET Framework

    First and foremost, while Windows Server 2003™ embraced managed code by being the first operating system to ship with the .NET Framework preinstalled, Longhorn is the first operating system whose major new features are actually based on the .NET Framework.
以下是节选于Michael Wallent,
One of the most important things when you think about Longhorn is, it's not just another operating system release like Windows XP or Windows 2000. We think about it more like a wave, and the wave is really made up of more than just any one particular thing. Think about the wave being built upon a foundation of a new platform investment that we've made across the board, built on top of the .NET foundation. And then with Longhorn there'll be client releases and a server release.

All of these statements say the same thing: the new features of Longhorn will be managed code and available through the WinFX API (which was formerly called the Longhorn API, and now is confusingly called .NET 3.0). The overall theme of the 2003 PDC was that to get the full benefits of Longhorn you had to write managed code.

以上,证明我楼上的帖子不是瞎掰的,.Net 3.0本来的名字甚至是Longhorn API

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
发表于 2008-1-1 15:53:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

7

主题

54

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2009-6-8 01:33:00 | 显示全部楼层

Re:[探讨]C#开发的游戏到底慢不慢呢?

根据实践的经验来看,目前为止c++要快于c#

先介绍.net的:
缺点:
1.到c# 4.0为止(只会用c#,vb.net不会用).net的对象在内存中都是重量级的,所耗费的内存要比c多很多.当然,值类型的和c是相同的,引用型的还会少占一些内存,但是如果是加载类,那就需要耗费额外的内存.
2.虽然.net在第一次运行时会编译成本地代码,但是优化尤为有限,尤其是无法内嵌汇编尤其令人发指!其在操作效率在核心层上和内嵌汇编比根本不是在一个数量级上.这是致命的弱点.
3.目前.net的gc使用的是mark-sweep-compact算法的一个变种,其在压缩和标记,清除等方面虽然做了很多优化,并且也取得了很大的成就,但是我不得不说,在内存频繁加载卸载的游戏程序中,真的很不智能.而且,由于此算法的存在,预读很难实现,或者说实现预读需要不断的标记预读取的内存.

优点:
实在是太多了,挑个重点的说.
开发效率实在是优越,尤其是thread,timer等类在开发过程中可以轻松实现多线程,而且线程池的处理也不用自己操心,众多的开发控件,拖拽也是无比的舒心.用来做辅助工具简直就是不二之选.

下面说说c++
c++的优点被说了无数次了,其中最NB的就是内嵌汇编,指针和自由控制内存布局.我们自己控制内存,显存可以很轻松的控制预读部分数据,内嵌汇编的效率不用多说,指针在某些时候简直就是提高流程性能的杀手锏.

缺点:开发慢,尤其是多线程的时候一不小就error了.

其实说了这么多,最关键的还是程序员的水平,水平高,水平差的就算用c++写出来的还是一坨屎,水平高的用c#写出的可能要比水平差的用c++效率还高.
c#就像个荡妇轻松驾驭,快速解决.
c++就像个处女,开始的很难进入状态,但时间久了熟悉了,速度就快了起来.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 01:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表