Visual C には、約 250 ケースの大きな switch ステートメントがあります。
#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);
}
}
#defines には、-1 から -10,000 までの大きな範囲があることに気付くでしょう。物事は犬のように遅いので、これらの 250 の定義をより狭い (または連続した) 範囲に再定義するのに数時間を費やすと、速度が上がるのではないかと考えています。私は常に、コンパイラが数値を無関係にする方法でケース値を扱うと思っていましたが、その仮定を検証/無効にするための議論を見つけることができませんでした.