我在 Visual C 中有一个大的 switch 语句,大约有 250 个案例:
#define BOP -42
#define COP -823
#define MOP -5759
int getScarFieldValue(int id, int ivIndex, int rayIndex, int scarIndex, int reamIndex)
{
int returnValue = INT_MAX;
switch (id)
{
case BOP : returnValue = Scar[ivIndex][rayIndex].bop[scarIndex][reamIndex]; break;
case COP : returnValue = Scar[ivIndex][rayIndex].cop[scarIndex][reamIndex]; break;
case MOP : returnValue = Scar[ivIndex][rayIndex].mop[scarIndex][reamIndex]; break;
.....
default: return(INT_MAX);
}
}
您会注意到,#define 的范围很大,从 -1 到 -10,000。事情很慢,我想知道花几个小时将这 250 个定义重新定义为更窄(甚至连续)的范围是否可以加快速度。我一直认为编译器会以一种使它们的数值无关紧要的方式处理案例值,但我无法找到任何讨论来验证/无效该假设。