プロジェクト再構築マルチステートとswitchパフォーマンスの比較


テストコード:
public class Client {
  public static void main(String[] args) {
    long time = System.currentTimeMillis();
    for (int i = 0; i < 1000000; i++) {
        getA(new G());
    }
    System.out.println(" : "+(System.currentTimeMillis()-time));
    
    
    
    time = System.currentTimeMillis();
    for (int i = 0; i < 1000000; i++) {
        getB(i);
    }
    System.out.println("swtch : "+(System.currentTimeMillis()-time));
  }
  public static String getA(A a){
      return a.getName();
  }
  public static String getB(int i){
      switch (i) {
        case 1:
            return "A";
        case 2:
            return "B";
        case 3:
            return "C";
        case 4:
            return "D";
        case 5:
            return "E";
        case 6:
            return "F";
        case 7:
            return "G";
        default:
            return "H";
    }
  }

}
class A{
  public static String name = "A";
  public String getName(){
    return name;
  }
}
class B extends A{
  public static String name = "B";
  public String getName(){
    return name;
  }
}
class C extends A{
    public static String name = "C";
    public String getName(){
        return name;
    }
}
class D extends A{
    public static String name = "D";
    public String getName(){
        return name;
    }
}
class E extends A{
    public static String name = "E";
    public String getName(){
        return name;
    }
}
class F extends A{
    public static String name = "F";
    public String getName(){
        return name;
    }
}
class G extends A{
    public static String name = "G";
    public String getName(){
        return name;
    }
}

実行結果:
マルチステート消費時間:16 swtch消費時間:5
結論:多態は比較的に時間がかかり、特殊な需要ではなく、switchを使用することを提案した.