RT

解决方案 »

  1.   

    C++不见得效率就高,至少C的效率比C++高。
    排除编译器的因素,效率跟语言的层次是有关系的,一般来说越低级的语言,效率越高。
    C语言其实可以算是具有高级语言特性的汇编,其底层特质让它的效率较高。
      

  2.   

    C确实比C++的效率要高,但c/c++与其他语言(DELPHI,BASIC)的低层次主要表现在哪里??就是因为有个指针?
      

  3.   

    C语言允许直接访问物理地址,能进行位(bit)操作。
    C语言能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此 C既具有高级语言的功能,又具有低级语言的许多功能,可用来些系统软件。
    生成目标代码质量高,程序执行效率高。一般只比汇编程序生成的目标代码效率低10%~20%。
        C++的设计者stroustrup要求C++效率必须至少维持在与C相差5%以内,所以,经过精心设计和实现的C++同样有很高的效率,但并非所有C++程序具有当然的高效率,由于C++的特殊性,一些不好的设计和实现习惯依然会对系统的效率造成较大的影响。同时,也由于有一部分程序员对C++的一些底层实现机制不够了解,就不能从原理上理解如何提高软件系统的效率。 
      

  4.   

    可以直接对硬件进行操作
    ===================================================
    对硬件能否直接操作与语言无关吧.
    另外,c/c++和其他语言同样需要编译成汇编才能在硬件上执行的,访问地址的事完全可以由编译器来完成,倘若我有一段c/c++的代码没有用到指针和位操作的,请问我用另外一种语言来实现是否得到的效率会一样?(不考虑编码者的水平差异)就是因为有个指针?
    ========
    当然不是。
    也在于编译器========================
    其他语言同样有编译器,为何C/C++的编译器就胜人一筹?效率高是另一回事,关键在于写的人能否做到高效
    ================================================
    这里讨论当然是不考虑人为的水平差异
      

  5.   

    因为cpp的语法往往是跟汇编对应的,cpp编译连接后是100%的机器指令,
    而vb生成的exe不是100%的exe,其实是解释运行的;
    Java也是,生成的exe都不是对应机器指令,都是对应虚拟机的指令,然后还要虚拟机来解释它;
    而.net也是,生成的exe都是一种称为IL(InterMediate Language)的东西。大概就是这样子了,
    如果都是生成100%的机器指令,比如Pascal,那么CPP在速度上并无优势可言
      

  6.   

    to Featured:
    请问是否只有C/C++外,其它的语言都不是直接产生100%的? 这也是C/C++的性能能优于其它语言的地方?
      

  7.   

    同意 Featured(我握着爱情的门票静静排队……) 
    据说,C++相对于JAVA来说,优化的不够好,不过我也不是很清楚.
    但C比C++要高效是一定的,面向对象的设计使人更易理解,不过也同时浪费了一些效率.
      

  8.   

    请问是否只有C/C++外,其它的语言都不是直接产生100%的? 这也是C/C++的性能能优于其它语言的地方?
    ==========
    不是啊,比如我上面说的Pascal/Object Pascal。
      

  9.   

    其他还有很多,老一辈的应该都是(除了basic)
    比如ADA、Cobol……
      

  10.   

    C++语言比较接近于汇编,基本上都是很底层的东西,编译器一般不做额外的工作。
    其他语言就不一定了,比如C#或者Java中,你创建一个对象,看起来简单,其实底层CLR做了无数的工作,效率自然就低了
      

  11.   

    Featured 说得不完全正确。即使把C#和JAVA都编译成本地语言,其速度还是要比C++慢的,就是因为这些语言在执行中做了太多的额外工作,比如类型安全检查。打个比方,在C#或JAVA中,你定义两个类A和B,你要想把A的实例赋值给B,无论你用什么方法都是不可能的,但在C++中,只要用强制转换就可以(虽然这是不正确的)。
    实际上C++语言基本上不做额外的工作,这给用户带来了极大的灵活性,但也带来了出错的隐患
      

  12.   

    请问是否只有C/C++外,其它的语言都不是直接产生100%的? 这也是C/C++的性能能优于其它语言的地方?
    ==========
    不是啊,比如我上面说的Pascal/Object Pascal。
    ===============================================================================
    如果Pascal/Object Pascal也能产生本地代码,那么为何C/C++的代码执行次次次效率比它高?
      

  13.   

    to runrunrun(一条不会游泳の鱼) 
    强制类型检查是编译时做的吧?!
      

  14.   

    运行时也要做类型安全检查吗?
    Java这么傻?我没有深入看过Java,不知道
      

  15.   

    如果Pascal/Object Pascal也能产生本地代码,那么为何C/C++的代码执行次次次效率比它高?
    =========
    这个!二者运行效率应该差不多吧
    即使高,也是同一数量级的吧不会像c++ vs c#那样,在密集运算上性能差距达到10:1吧?
      

  16.   

    C#编译和运行时都要做类型检查的。比如你定义两个类ClassA,ClassB
    ClassA a = new ClassA();
    object obj = a;  // 能通过
    ClassB b = (ClassB)obj;  // 编译时能通过,运行时会报异常,