以此为例:
我有 20 个结构。我直接访问结构的所有字段,从它们获取值,指向它们可能拥有的其他子结构的指针,等等。
现在,我重新构建程序:我没有直接访问结构的字段,而是将所有结构封装到它们各自的类中,并为所有可能的 get() 和 set(x) 提供函数。
问题:使用方法/函数而不是直接访问结构是否会影响性能?
某种估计的百分比会很好,或者一些解释。
一般来说,如果 getter 和 setter 在类中内联定义,则不应该存在性能差异。对于几乎任何当代编译器,函数调用将被内联扩展,不会留下任何开销。这通常适用于各种小型内联函数。(例如,请参阅http://www.gotw.ca/publications/mill18.htm,Herb Sutter 讨论了为什么将大多数/所有虚拟函数设为非公开不会增加结果代码的开销。)
请注意,如果您确实在类中定义了内联函数,则如果定义发生更改,则任何客户端代码都需要重新编译。但这适用于头文件中的大多数/所有更改。
我还没有听说结构和类之间的性能差异很大,所以这是你的电话。我在下面搜索了这些页面,他们说在性能方面应该没有区别。 http://www.gamedev.net/topic/115725-is-a-struct-faster-than-a-class/ http://forums.codeguru.com/showthread.php?332571-Struct-vs-Class