c++ - OOP 是否鼓励良好的缓存,从而获得良好的性能?

标签 c++ performance oop

我正在使用 Ogre3D,所以我使用了几个继承 Ogre 和 OIS 类的类来运行我的项目。

我开始遇到一些问题,因为我经常需要从一个单例访问变量以告诉另一个单例做我想做的事,所以我有大量的 getters/setters 使我的项目膨胀.

我知道保持数据触手可及对于性能很重要,OOP 默认情况下鼓励这种做法,因为您将需要的变量保存在类中,但在某些时候它感觉像是一个巨大的限制,我最终做了一些使用所有这些构造函数进行大量初始化,这很可悲。

我的小荒谬游戏永远不需要那么多资源,Ogre3D 使用 OOP 所以它可以高效地完成它的工作,它不需要我使用 OOP 来做我的游戏。

我正在考虑将所有数据放入不同的结构中以公开所有内容,而不关心封装。

尽管 OOP 设计糟糕,但它会对性能产生影响吗?

最佳答案

如果您想通过缓存提高性能,OOP 不是一个表演障碍,但也不是完美的编程范式:它通常建议对象中的可变状态,例如正如您所提到的,setter 用于简化构造函数。对于可变状态,对象的可重用性以及缓存变得更加困难。因此,尝试最小化可变性(参见例如 Josh Bloch's Effective Java ,第 15 项)。

这就是为什么函数式范式更合适的原因。但是您可以在经典 OOP 中很好地采用它。现代 OOP 语言(例如 Scala、C#、C++11)实际上是多范式的,并提供所有必要的功能,以实现简单的不变性和一般的函数式编程。

关于c++ - OOP 是否鼓励良好的缓存,从而获得良好的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9300467/

相关文章:

c++ - 标识符未在宏中定义

c++ - c++中如何读入一个文件并垂直显示内容,然后读入另一个文件并垂直显示内容

c++ - 智能指针二维数组作为参数

java - 如何将多个核心/线程合并为一个线程?

c++ - 动态调度 OOP

c++ - 具有由整数模板参数指定的参数数量的类方法

c++ - 如何将 DOMDocument 从 VBA 传递到 C++ dll

r - 在 R/Rcpp 中转置列表的最快方法

c++ - Dalvik 对 native C++ 代码性能的影响?

java - 如何使用 OOP 将点类分支为直线和三角形 (Java)