.Net是否降低了C的運行速度?

解决方案 »

  1.   

    “.Net是否降低了C的運行速度?”???
    你这句话颇令人费解啊。
      

  2.   

    LZ的问题很模糊,毕竟针对不同的情况有不同的工具,.net好像不能开发c,如果说是c++,c#,以及vb等是在.net平台运行,但是你也可以直接在控制台上运行,但是.net毕竟提供了极好的技术支持,可能在运行时会很慢,但是他毕竟提高了你开发的效率,尤其是在oop中,所以我并不认为用.net开发会降低其工作效率
      

  3.   

    说效率跟算法有关是避重就轻,回避了楼主的问题楼主问的是C/C++/C#的执行效率,前提条件肯定是同样的算法,同样的硬件.......虽然是在.Net版块,也不用忌讳,语言自身的表现力越强大,使用起来越方便,其执行效率越低,这是规律C就是邻家女孩,清秀/隽永/心思细密,上大场面就害羞,心里深藏着童年对她的暗恋
    C++就是对面的村嫂,五大三粗,风风火火,里里外外一把手
    C#就是酒店坐台的小姐,风情万种,人见人爱,谈谈情可以,要娶回家,你敢吗?
      

  4.   

    对于一个人,他精通c++也精通c#。同一个系统(业务复杂度、算法等因素相同)情况下,非托管的c++效率好高。
      

  5.   

    看需求如果是普通的应用程序比如网站或者REP,CMS之类的管理系统
    用.net开发速度快,稳定,成本低,便于维护。如果是要求很高的高端仪器,大型服务器,那就用C吧.C++介于两者之间,比较尴尬.
      

  6.   

    摆脱大大们,又是无聊的争论c,c++,c#???都是语言无所谓强于不强,如果说效率,他和语言无关,只和编译器有关而要硬是去谈啥效率,lz最好倒退50年,直接用打孔机打纸带,他的效率最高。因为他只有0,1我都不知道中国的老师都是怎么教学生滴,这种语言之争也就在中国的论坛上可以看见,为啥老外不争,难道老外都是SB,都不讲效率???
      

  7.   

    有什么根据,如果使用framework.net,最后都经过clr,没有什么差别。
      

  8.   

        我感觉大多数程序员有一种使用c的“贵族”感,他们轻视使用其他语言的人,似乎形成了一种风气,对半路出家的非软件专业而进入软件行业的人产生了误导,这一点很不好。
        程序员应该是讲究理论和方法功底的,而不仅仅是使用c,他们应该达到这样的境界:什么语言拿来就用,遇到什么问题就解决什么问题。
        其实我使用过多种语言:机器码、汇编/宏汇编、algo60、fortran77、pascal、prolog、lisp、c/c++、basic、ada、这些年陆续使用了vb、vb.net、java、c#还有类似script的东西,用这些语言解决了具体的问题,体会是:在语言之间的转换没有任何障碍,要说有障碍的话就是快速熟悉每种语言的开发平台。
        不过2009年《程序员》杂志有个统计:c程序的工资收入最高,就业容易,我想这只代表一种流行和应用领域的广泛,如单片机、嵌入式开发等。
        如果讲究点追求纯c的东西,c那东西确实生涩,是最不容易读和使用的一种语言,是代码写过一段时间后最难再读懂得语言,尤其是指针的使用,所以后来的语言都回避了这一点,如c++、java、c#等,其实后来的改进语言都潜在地强化了指针的使用,因为没有指针,就无法想象怎样使用类和对象实例。
      

  9.   

    很多大型软件还是以C++为主的
    我们正在开发的软件,也就只有高层几个UI相关的project/solution是C#,其他的都是C++
    尽管UI可以使用C#,但最主要的exe使用的仍然是C++,也就是说WPF开发的只是软件支持的一种UI风格而已
    源代码文件数接近10万,近千个solution,编译一次要是十几个小时
    为什么选择C++,相比C,有高度的抽象性,软件不是只为追求效率而开发的,可扩展性,易于管理,尤其是大规模的时候,是非常重要的
    相比C#,java,C++的优势是操作底层的能力,能够以最小代价实现抽象,成本能够由开发者控制。如果不能控制细节,到上层会越来越臃肿
      

  10.   

    此话诧异,像是一个没有写过软件的人说的话,也许是某个“高层”人说的话,这种高层人就是只会说不会写代码的那类人。
    高度的抽象型不是c++唯一,也不是某个语言的唯一,它与算法或数学有关,也不知道你是从哪里抄来的这段话,真是荒唐。什么“大型的”、“可扩展性”、还有什么“大规模”,简直与c++不着边际,说是实在的,c++的唯一优点是支持面向对象和带有c的兼容性罢了。
    看来你是真不知道新的开发平台和架构了,怎么尽说些20年前的话。还在说“我们正在开发软件...”云云,真不知道你是用的是什么“先进”的开发平台封闭在某个角落里,实在是有点说外行话了。
      

  11.   

    该语言不适用于编写时间紧迫或性能要求非常高的代码,例如:一个要占用1000或1050个机器周期的循环,并在不需要这些资源时,立即清理它们,见《Professional C# and .NET 4》,此书作者:Microsoft区域董事、Microsoft MVP,PureSafety首席架构师,.NET技术和基于社团的.NET学习活动的积极倡导者:Christian Nagel、Bill Evjen、Jay Glynn、Karli Watson、Morgan Skinner。但这句话我目前还没有体验。
      

  12.   

    c#有对象回收机制,一般都是有framework提用户完成,在写一般代码时用户很少自己使用对象回收机制。c/c++本身也不能完成类似的要求,这不是语言本身的问题,而是编译器或开发平台有没有提供这个功能要求的问题,只有c编译器提供了这个功能才行。
      

  13.   

    C/c++/c井\
    都是各有个的优势的了,具体是看做什么了.\
    如果没有具体环境真的非常的不好说了!
      

  14.   

    说这些话都有什么依据,即使在同样的环境下,谁真正使用代码验证过,都是听说的,我就不相信,不要以为能够做点位操作或有点类似汇编语言的样子就别人为效率,其实这都不是语言本身的事情,而是开发平台的事或编译器的事。否则的话,微软、甲骨文就不会建立起.net和java架构了,直接在中间层使用c多好,多简单,多成熟,为什么会多此一举。
      

  15.   

    说这些话都有什么依据,即使在同样的环境下,谁真正使用代码验证过,都是听说的,我就不相信,不要以为能够做点位操作或有点类似汇编语言的样子就被自然的为效率高,这是形而上学,其实这都不是语言本身的事情,而是开发平台的事或编译器的事。否则的话,微软、甲骨文就不会建立起.net和java架构了,直接在中间层使用c多好,多简单,多成熟,为什么会多此一举。
      

  16.   

    至少有一大类软件仍然是C++的属地:CAD/CAE/CAM/EDA等大型应用软件
    公司有synopsys cadence Ansys NASTRAN autodesk(AutoCAD Inventor) ug Dassault(catia solidworks) PTC(pro/e)等
    就算一个基本的3D/2D CAD Kernel,也没见市场上有成熟的.net或java版本(java确实有,但不会有任何大公司采用)
    还要支持数据的显示,存储,选择,编辑,分析等基本功能是有.net和java架构,但主要是针对业务流程快速开发比较有效,但毕竟不是所有的软件都是业务类型的
      

  17.   

    可以说是老公司,不能说是老软件
    难道只有搞业务,编写客户逻辑的才是IT公司?
    像sysnopsys, autodesk, dassult等公司的客户也有千千万万,每年也推出大量新的产品
      

  18.   

    语言一方面 更重要还是要对 代码执行的所造成的结果的理解
    知道自己写的代码 对内存空间进行了些什么操作 
    如果不理解内存,很多代码执行效率都很低,就好比vector和list
    如果不区分两种类型的区别而觉得可以随便替代使用
    那你的代码绝对好不到哪去
    不管是汇编 还是 c c++ c#都一样
    要说语言强弱 那更多取决外部因素 比如整个项目对应的模块全是用 c# 你用个c++跟这些交互不是找事?
      

  19.   

    如果连vector和list都分不清楚实现的区别,我想他连了解C++都算不上
    使用C++开发大型程序,除了掌握C++的语法外,我想至少有几个方面需要深入了解:
    1. Effective
    也就是如何使程序更高效,一些C++使用中的基本问题
    参考书有Effective C++, More Effective C++, Effective STL等
    2. Exceptional
    如何编写异常安全的程序,如何保证程序申请的资源在发生异常时能够得到释放
    参考书Exceptional C++, More Exceptional C++
    3. Object Model
    我想每一个合格的C++程序员应该尽量去了解编译器实现,C++标准制定的一些底层机制
    很多人说C++比C臃肿,可能会降低运行速度。那作为C++程序员,你应该知道每个C++特性,编译器为此要付出多少代价(相比C),时间上的,空间上的,那一些是编译器可以优化的,等等
    参考书Inside the C++ Object model
    4. template
    template是提高C++使用水平的一个重要组成部分。毕竟很多时候纯OO不能解决所有问题,在3中,也会看到OO所带来的cost。另外,我们想在编译器做尽量多的工作,template可以完成在编译器的很多计算。
    熟练掌握偏特化,类型推导,traits等技法,是template的基本内容。再者,应该知道如何扩展stl容器,以及iterator的实现
    参考书Generic Programming and STL, STL源码剖析, The C++ Standard Library Extensions, Extend STL, Volume 1, C++ Template Metaprogramming
    5. Design Pattern
    这一部分我就不多说了,基本上是不分语言的。可以在很多大型程序中看到他们的实现,至少在我们的工程中,基本上每种模式都是有的。10年,或许对于C++来说,也仅仅算是入门
      

  20.   

    一个比较实际的问题
    C#支持序列化,你知道MS在序列化背后做了那些工作,代价又是怎么样的?
    有没有遇到过反序列化运行时间反常的情况,本来几十k的数据正常只需几十毫秒,却用了1分多钟?
    如果你准备用C++实现,如何重新设计?
    当然可以用boost的序列化库来完成工作
    但是我们有新的需求,很多待序列化的数据是为了加速查询而创建的,保存的是指针,如何序列化指针?
    我们需要支持指针的序列化库,如何设计?有两点需要注意的:
    1. 支持任何类型,包括build-in的类型,用户自定义的类型,还有指针,反序列化时进行类型检查,包括不同类型指针的检查
    2. 效率,如何使OO带来的附加cost最低,build-in类型怎么处理,为了完成指针的类型检查,如何设计指针类,等等
      

  21.   

    这问题要看谁来回答,回答问题的人不同,答案不同。
    c++和c#谁速度快?c++程序员答:c++快。c#程序员答:
    1、程序快慢和算法有很大关系,算法不同速度不同。
    2、程序快慢和人有很大关系,高手写C#比低手写c++快
    3、c++开发效率慢,不如c#
    4、人们越来越多的使用c#而不是c++,就是c#强大的证明
    5、在汇编、c语言程序员眼里,c++就是低效率
    6、你为什么不去用汇编,为什么不去用机器语言?
    7、xxxxxxxxx
    8、……………
      

  22.   

    你为什么没有想想,这种“贵族”感是从何而来呢?
    很简单,在计算机科学的领域,c和c++确实比c#要有用。c#现在所在的领域,只不过是软件工程的部分罢了(另外还被java和c++瓜分了绝大部分),而c语言几乎涵盖整个计算机科学领域。
    别以为自己掌握些什么模式、算法、uml、架构就是掌握了编程,在整个cs领域,这只是相当小的一块罢了。真是夏虫不可语冰。
      

  23.   

    虽然离掌握这几部分还差很远吧,但还真不知道cs领域有什么大部头的。
    反过来说,这几部分哪怕只有一部分真的掌握了,也是很NB的。