|
|
发表于 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++就像个处女,开始的很难进入状态,但时间久了熟悉了,速度就快了起来. |
|