【问题标题】:More efficient to loop inside switch statement or use switch statement inside loop?在 switch 语句内循环或在循环内使用 switch 语句更有效?
【发布时间】:2018-08-05 09:30:03
【问题描述】:

(以java为参考) 我正在尝试确定哪个会更好,编写更多代码并可能节省一些计算时间或编写更少的代码但可能会牺牲一些计算时间。 这是我很好奇的, 这样做会不会更有效率:

switch (availability) {
    case "CASE A":
        for loop through hashmap Z:
              do specialized action a();
        break;
    case "CASE B":
        for loop through hashmap Z:
              do specialized action b();
        break;
}

或者这样做会更好

for loop through hashmap Z:
   switch(availability){
      case "CASE A":
        do specialized action a();
        break;
      case "CASE B":
        do specialized action b();
        break;
   }

只是想知道一种方法是否比另一种更好?显然一个使用更多的代码,但它比另一个有优势/劣势吗?

【问题讨论】:

  • 嘿里德,你不试试看吗?

标签: java performance loops switch-statement


【解决方案1】:

除非这是一些关键代码,否则我会优化可读性并让编译器优化实际代码。

通常一段代码的最高成本是阅读、理解和改进/维护它。执行成本要低得多,尤其是在云计算资源不断增长的情况下。

我知道这不是你问题的答案,但它确实是我多年来学到的。

【讨论】:

    【解决方案2】:

    Approach-1 在效率方面更好。尝试减少任何循环迭代中的执行。在 Approach-2 switch(availability) 中,如果 hashmap 大小为 n,语句将被执行 n 次。如果 hashmap 的大小在大规模应用中非常高,那么这个额外的成本将会很高。

    switch (availability) {
        case "CASE A":
            for loop through hashmap Z:
                  do specialized action a();
            break;
        case "CASE B":
            for loop through hashmap Z:
                  do specialized action b();
            break;
    }
    

    【讨论】:

    • 为什么这被否决了?这在很大程度上是正确的,非常标准的建议。
    猜你喜欢
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多