C++性能/内存优化指南

ML.*_*ML. 5 c++ compiler-construction optimization performance

有没有人有C++内存优化指南的资源?最佳实践,调整等?

举个例子:

Class xxx {

    public: 
        xxx();
        virtual ~xxx();

    protected:

    private:

};
Run Code Online (Sandbox Code Playgroud)

编译器或内存分配是否有任何好处,以摆脱受保护和私有,因为在这个类中没有受保护和私有的项目?

更新:什么是程序员这样做:

Class xxx {

    public: 
        xxx();
        virtual ~xxx();

    public:
        more stuff();
        more();

   ifndef __BUILD_WIN__
      public:
        even more();
        envenmore2();
   endif
    protected:

    private:

};
Run Code Online (Sandbox Code Playgroud)

Bru*_*ant 12

有没有人有C++内存优化指南的资源?最佳实践,调整等?

这在很大程度上取决于您的编译器和目标环境(RISC,Unix/Linux,Windows).大多数编译器都会有这样的信息.

有一些实用程序可以跟踪内存泄漏,以便您可以在测试期间修复它们.如果要动态分配很多东西(通常是C/C++的情况),请尝试确保在销毁对象之前解除所有内容.去做这个:

  • 如果您重视处理器上的内存,请使用智能指针.
  • 如果你的类有任何指针的成员变量,请确保你的析构函数释放每个成员变量.将您的成员变量组合在源代码上,以便将这些变量与析构函数进行比较.
  • 尽可能避免动态内存分配以避免泄漏.喜欢std::string动态分配char*

编译器或内存分配是否有任何好处,以摆脱受保护和私有,因为在这个类中没有受保护和私有的项目?

不,如果我没有弄错,仅在编译期间检查protected/private,因此即使关键字下面有项目,它们也不会影响性能.

此外,重要的是要理解编译器非常智能(通常比程序员更多),因此它会优化掉任何可能的东西; 例如,让我们int a在构造函数中声明一个变量.让我们说你根本不使用它,你只是忘了那里.大多数编译器甚至不会将堆栈空间保存到这些变量中.其他人需要用户激活优化才能发生这种情况,但根据经验,任何程序的生产版本都应该在启用优化的情况下编译,即使没有完整.

关于更新,您看到的是预处理器指令,并用于执行所谓的选择性编译.看看这里.

  • @ML:我从未使用过XCode(它是Apple的目标IDE,不是吗?)但是可能有办法实现.编译器掌握了许多顶级程序员的知识,这就是他们比普通程序员更聪明的原因.卡斯帕罗夫是最好的国际象棋选手,但被人们创造的软件击败了!(这就是我喜欢的计算机,尽管我希望卡斯帕罗夫能够超越DeepBlue). (2认同)