谁有C++内存优化指南的资源?最佳实践、调优等?
举个例子:
Class xxx {
public:
xxx();
virtual ~xxx();
protected:
private:
};由于在这个类中没有受保护和私有的项,那么在编译器或内存分配上去掉protected和private会有什么好处吗?
更新:什么是程序员做这件事:
Class xxx {
public:
xxx();
virtual ~xxx();
public:
more stuff();
more();
ifndef __BUILD_WIN__
public:
even more();
envenmore2();
endif
protected:
private:
};发布于 2010-04-01 02:22:04
谁有C++内存优化指南的资源?最佳实践、调优等?
这在很大程度上取决于您的编译器和目标环境(RISC、Unix/Linux、Windows)。大多数编译器都会有这样的信息。
有一些实用程序可以让您跟踪内存泄漏,以便您可以在测试期间修复它们。如果你打算动态分配很多东西(这通常是C/C++的情况),在销毁一个对象之前,试着确保你释放了所有的东西。为此,请执行以下操作:
std::string而不是动态分配的char*,等等。由于在这个类中没有受保护和私有的项,那么在编译器或内存分配上去掉protected和private会有什么好处吗?
不,如果我没记错的话,protected/private只在编译期间被检查,所以即使关键字下有项,它们也不会影响性能。
此外,重要的是要理解编译器是非常智能的(通常比程序员更聪明),所以它会优化掉它能做的任何事情;例如,让我们在构造函数中声明一个变量int a。假设你根本不使用它,你只是把它忘在那里了。大多数编译器甚至不会为这些变量节省堆栈空间。其他人则需要用户激活优化才能实现,但作为经验法则,任何程序的生产版本都应该在编译时启用优化,即使不是完全启用。
关于,你看到的东西是预处理器指令,被用来做所谓的选择性编译。看看here吧。
发布于 2010-04-01 02:23:21
编译器不需要解析它们,所以这对编译器是有好处的。这是有价值的(不是很有价值)。
应该没有内存使用差异。
除此之外,我能想到的唯一好处是,对于阅读代码的人来说,必须处理的繁琐工作减少了(并不是说它在您的示例中特别繁琐)。
发布于 2010-04-01 03:18:19
有Dov Bulka和David Mayhew的"Efficient C++: Performance Programming Techniques“。我不认为它是开创性的,但它确实是一本有趣的读物,它教会了一些基础知识。
https://stackoverflow.com/questions/2555402
复制相似问题