从性能的角度来看,分支函数调用的最佳实现是什么?
在原始情况下,我们有一个相当大的 switch 语句,它解释字节码并根据代码执行函数调用。
在正常情况下,我们计算的 goto 和标签做同样的事情。
做到这一点的绝对最佳方法是什么?
一个抽象的例子,
schedule: swap_entity(); goto *entity_start(); lb_code1: do_stuff(); goto *next_code_item(); lb_code2: do_stuff(); goto *next_code_item(); ...
编辑:我对“分支函数调用”的引用可能有些错误。分支代码执行。
最佳答案
猜测可能是一个函数指针数组:
void dispatch(Message* message)
{
//MessageType is a finite enum
MessageType messageType = message->messageType;
int index = (int)messageType;
//there's an array element for each enum value
FunctionPointer functionPointer = arrayOfFunctionPointers[index];
(*functionPointer)(message);
}
实际答案取决于硬件,取决于问题的大小和 CPU 的缓存等因素。
关于c - 分支优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1337155/