试图优化fun_a1()
功能。变量j
在范围内不变fun_a1()
。因此,为每个“i”迭代检查 j==1 或 2 或 3 显然是对 CPU 周期的浪费。但是如果我试图将条件评估带到循环之外,我必须为每个条件编写冗余循环。在 C 语言中,我可以通过使用函数指针轻松解决这个问题。但是,C++ 不允许指向非静态函数的指针。我发现了一些描述神秘的“指向成员”的链接。(示例 1,示例 2)但是仍然不清楚如何从对象本身内部使用它,例如从 fun_a() 内部?还是可以通过其他方式进行优化?
class A{
void fun_b(int i);
void fun_c(int i);
void fun_d(int i);
void fun_f(int i);
void fun_a1(int j){
for(int i=0; i<1000; i++){
if(j==1) fun_b(i);
else if(j==2) fun_c(i);
else if(j==3) fun_d(i);
fun_f(i);
}
}
void fun_a2(int j){
if(j==1){
for(int i=0; i<1000; i++) {
fun_b(i);
fun_f(i);
}
}
else if(j==2){
for(int i=0; i<1000; i++) {
fun_c(i);
fun_f(i);
}
}
else if(j==3){
for(int i=0; i<1000; i++) {
fun_d(i);
fun_f(i);
}
}
}
};