以以下内容为例:
我有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