プロジェクト再構築マルチステートとswitchパフォーマンスの比較
1921 ワード
テストコード:
実行結果:
マルチステート消費時間:16 swtch消費時間:5
結論:多態は比較的に時間がかかり、特殊な需要ではなく、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を使用することを提案した.