【发布时间】:2012-12-13 05:16:57
【问题描述】:
我的 C++ 项目中有一个粒子系统引擎,粒子本身只是没有函数的变量结构。目前,每个粒子 (Particle) 通过直接访问其变量从其父类 (ParticleSystem) 更新。例如
particle.x += particle.vx;
然而,我正在辩论使用这样的 getter 和 setter:
particle.setX( particle.getX()+particle.getVX() );
我的问题是:与直接访问数据相比,调用 getter 和 setter 是否有任何性能开销?
毕竟,我确实有很多很多粒子要更新...
【问题讨论】:
-
setter/getter 主要是为了代码的可读性/可维护性。调用函数会比直接访问数据有性能开销。
-
Getter 和 setter 仅用于封装数据和对其的访问。没有性能开销,简单的 getter 和 setter 由编译器内联。
-
@habeebperwad:我无法想象它们是如何提高可读性的,但它们确实使更改实现变得更容易。
-
@MartinKristiansen:是的,你希望如此,而且你大部分时间都是对的,但并非总是如此。最好检查一下您是否在对性能至关重要的紧密循环中调用函数。
-
@All。显然,性能开销不会很大。但是在比较调用函数和直接数据访问时,我们可以看出直接数据访问会更快,即使开销不是很大。
标签: c++ performance getter-setter