ブックマーク / zenn.dev/naminodarie (1)

  • C# 9.0の範囲パターンのswitchはわりと賢くコンパイルされる

    public class C { public int Expr(int num) { if (num < 30) { if (num < 10) { if (num <= 0) { return -1; } return 0; } if (num < 20) { return 1; } return 2; } if (num < 50) { if (num < 40) { return 3; } return 4; } if (num < 60) { return 5; } return -1; } } なんと二分探索になっています。 このくらいならばif文を列挙しても大差ないかとは思いますが、二分探索になることで if文が実行される回数が log_2(ケース数) 回程度になります。デメリットなしで高速化が期待できるので、範囲を列挙するような箇所では積極的にswitch式で書いてしまうの

    C# 9.0の範囲パターンのswitchはわりと賢くコンパイルされる
    shoechang
    shoechang 2021/05/08
  • 1