代码之家  ›  专栏  ›  技术社区  ›  Sadeq

一个C++程序真的比一个类似的C程序慢吗?[关闭]

  •  5
  • Sadeq  · 技术社区  · 14 年前

    假设我在C++中编写了一个程序,不使用RTTI和运行时多态(没有虚拟函数,没有虚拟继承),类没有私有/保护成员,也没有使用C++特定的头文件(即C头文件): cstring , cstdio string , iostream

    然后我想用C编写一个类似的程序,其中函数的第一个参数类型对应于相关的 struct .

    例如:

    //C++ code
    
    struct Custom
    {
        int a;
        Custom() { }
        void change() { }
        ~Custom() { }
    };
    
    int main()
    {
        Custom m; //init m
        m.change();
        //destroy m
    }
    
    /*C code*/
    
    struct Custom
    {
        int a;
    };
    void custom_init(Custom* like_this) { }
    void custom_change(Custom* like_this) { }
    void custom_destroy(Custom* like_this) { }
    
    int main()
    {
        Custom m;
        custom_init(&m);
        custom_change(&m);
        custom_destroy(&m);
    }
    

    C++程序是否比一般的C程序慢?如果是的话,那么为什么C程序更快呢?我知道,C++使用RAII设计模式来进行内存管理,原因是慢吗?

    编辑:为什么这个问题是关闭的?我想知道c++是否做了我们不需要的额外工作,以及它如何影响性能(使它变慢?快一点?或者什么都没有?)。

    3 回复  |  直到 14 年前
        1
  •  6
  •   log0    14 年前

    C++不使用RAII。你呢 可以 在c++程序中使用RAII。
    两个程序应该完全一样快。
    在C或C++中编写快速程序不是编程语言的问题,而是使用什么样的特性。

        2
  •  4
  •   paxdiablo    14 年前

    你不尝试就永远不会知道。如果C++使用C没有的任何东西(例如构造函数、析构函数,甚至非虚方法),则 可以 慢一点。

    任何 软件。它随着时间的推移而改善。

    量,别猜! 分析你的特定代码,看看哪个更快。但即使是C代码 我的

        3
  •  2
  •   Alex B    14 年前

    不,几乎可以肯定是假的。RAII本身不会使程序变慢。C和C++编译器可能会为这些例子生成几乎相同的代码。