代码之家  ›  专栏  ›  技术社区  ›  slipperypete

在循环中将循环200万次的循环中,使用最后一个字符串的最有效方法是什么?

  •  0
  • slipperypete  · 技术社区  · 6 年前

    在这种情况下,我需要调用一个带有一组字符串值的函数。字符串是常量,因为它们不会被修改。但是有一些逻辑可以决定用哪个字符串调用函数。我考虑过使用枚举,但后来决定使用它会很糟糕,因为我必须在该枚举上调用.toString(),在循环的每次迭代中调用50次,每次迭代将达到200万次。解决这个问题最有效的方法是什么?

    我的解决方案是

    public class Attributes {
        private Attributes() {}
        public static final MY_STRING = "MyString";
    }
    

    然后在循环中做:

    public String myFunction() {
    
       for(int i = 0; i < 2000000; i++) {
           callThis(Attributes.MY_STRING)
       }
    
    }
    
    
    public String callThis(String myString) {
       //.... dadaddad
    }
    

    我担心内存问题,所以我希望使用这些常量字符串以最有效的方式调用函数。这是最有效的方法吗?或者,解决这个问题的最佳方法是什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   sprinter    6 年前

    如果不引用JVM、OS、HW、配置、版本和许多其他因素,就不可能回答“什么是最有效的方法”。Java是一种语言,它可以以不同的方式实现,具有不同的性能特征。

    更普遍的是,在很少的情况下,您需要担心像这样的小代码片段的效率。大多数Java实现中的优化器非常复杂:如果您为清晰性和正确性编写代码,您通常可以信任它来完成它的工作。

    你提到了200万次的循环。这对任何现代机器来说都是微不足道的负担。如果您以最清晰的方式编写代码,并且发现性能问题,那么您可以对代码进行概要分析,并优化重要的方法。众所周知,提前正确决定需要优化的内容是非常困难的。

    所以,总结一下,直到你知道你有一个问题为止,忽略性能和代码的清洁和清晰。