我有以下情况:
class A
{
public:
A(int whichFoo);
int foo1();
int foo2();
int foo3();
int callFoo(); // cals one of the foo's depending on the value of whichFoo
};
在我当前的实现中,我将 in 的值保存whichFoo
在构造函数中的数据成员中,并使用switch
incallFoo()
来决定调用哪个 foo。或者,我可以switch
在构造函数中使用 a 来保存指向要在fooN()
中调用的权利的指针callFoo()
。
callFoo()
我的问题是,如果 A 类的对象只构造一次,而被调用很多次,那么哪种方式更有效。因此,在第一种情况下,我们多次执行 switch 语句,而在第二种情况下,只有一个 switch,并且使用指向它的指针多次调用成员函数。我知道使用指针调用成员函数比直接调用要慢。有谁知道这个开销是多于还是少于 a 的成本switch
?
澄清:我意识到,除非您尝试并计时,否则您永远不会真正知道哪种方法可以提供更好的性能。但是,在这种情况下,我已经实现了方法 1,我想知道方法 2 是否至少在原则上更有效。看来它可以,现在我费心去实现它并尝试它是有意义的。
哦,出于美学原因,我也更喜欢方法 2。我想我正在寻找实施它的理由。:)