关于java:性能:比较/切换字符串值与类别

Performance: comparing/switch of a string value with categories

本问题已经有最佳答案,请猛点这里访问。

我有一个变量,它的值是我想要切换的,并且基于这些值执行操作。以下是我目前的工作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
switch(myvalue)
{
   case"action1_category1":
   doAction1();
   break;
   case"action2_category1":
   doAction2();
   break;
   case"action3_category1":
   doAction3();
   break;
   case"action4_category2":
   doAction4();
   break;
   case"action5_category2":
   doAction5();
   break;
   case"action6_category2":
   doAction6();
   break;
   ...
}

所以,我在想,为什么不把变量分为两类,然后这样做:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
if(myvalue.endsWith("category1")
{
    switch(myvalue)
    {
       case"action1_category1":
       doAction1();
       break;
       case"action2_category1":
       doAction2();
       break;
       case"action3_category1":
       doAction3();
       break;
      ...
    }
}
else
{
    switch(myvalue)
    {
       case"action4_category2":
       doAction4();
       break;
       case"action5_category2":
       doAction5();
       break;
       case"action6_category2":
       doAction6();
       break;
      ...
    }
}

这种新方法会提高或降低我的性能吗?谢谢您。


好吧,我将向微优化的第一个解决方案迈进……但现在这种哲学被认为是邪恶的。这里有一个提示