Enum.GetValues() が遅いので

前にも書いたけど Enum クラスのスタティックメソッド群は結構低速だったりして、特定の型に対して

enum Enum1
{
  A, B, C, D,
}

private IEnumerable<Enum1> AllEnum1()
{
  yield return Enum1.A;
  yield return Enum1.B;
  yield return Enum1.C;
  yield return Enum1.D;
}

とか、

enum Enum2 : int
{
  A = 0, 
  B, 
  C, 
  D,
  __END__
}

private IEnumerable<Enum2> AllEnum2()
{
  for (int i = 0; i < (int) Enum2.__END__; i++)
    yield return (Enum2) i;
}

とか、書いて GetValues と置き換えてみたらかなりはやかったり…。