Java 什么更有效率?存储变量引用与否(Android中的上下文) 我们假设在一个方法的中间。我可以在两种编程风格中进行选择
选项A:每次需要访问资源时都使用getContext.getResourcesJava 什么更有效率?存储变量引用与否(Android中的上下文) 我们假设在一个方法的中间。我可以在两种编程风格中进行选择,java,android,performance,optimization,Java,Android,Performance,Optimization,选项A:每次需要访问资源时都使用getContext.getResources public void doSomeStuffA(){ //... getContext().getResources().getDrawable(R.drawable.ic_launcher); getContext().getResources().getDrawable(R.drawable.ic_arrow); //... } 选项B:将getContext.getResources存
public void doSomeStuffA(){
//...
getContext().getResources().getDrawable(R.drawable.ic_launcher);
getContext().getResources().getDrawable(R.drawable.ic_arrow); //...
}
选项B:将getContext.getResources存储在变量中
public void doSomeStuffB(){
//...
Resources r = getContext().getResources();
r.getDrawable(R.drawable.ic_launcher);
r.getDrawable(R.drawable.ic_arrow);
//...
}
哪种样式更好?作为一般惯例,在这种情况下不是特别的 使用选项A: 资源不断变化,您需要资源的最新值
如果只调用一次资源上的方法 使用选项B: 资源不会改变,那么您可以使用引用,并在任何地方使用它。
就像在性能和调优方面的许多工作一样,正确的答案是这取决于具体情况。99%的情况下,额外的hashmap解引用与变量引用之间的差异不是最大的性能问题,甚至不是值得注意的性能问题。诀窍是要理解什么时候可能会出现问题,例如频繁的紧循环调用
在单个方法中,我倾向于使用选项B,主要是为了可读性。使用Kotlin使所有内容整洁
fun someFun() {
with(getContext()) {
var d1 = getDrawable(R.drawable.ic1)
val d2 = getDrawable(R.drawable.ic2)
...
}
}
如果您多次调用资源上的方法,最好使用选项B。但有时如果资源不断变化,您必须调用资源使用选项a的最新值上的方法,您的意思是反之亦然?我更正了它,抱歉:P@Vwin我把它从4倍缩短到2倍。使用选项A更好吗?如果资源不变,我仍然会使用上述规则和选项B。效率可能不会有大的改变,但这仍然是一个很好的做法。然而,如果你有一个tstament,我会选择ASo选项,在你需要在同一范围内多次引用变量时,使用选项B?假设资源在两次引用之间没有变化是的,我会这么做。而且它肯定比获得资源要好每次资源都是不变的,它们怎么可能改变呢?我是在一般意义上说的。与其两次调用一个方法来获取某些东西,不如调用一次并使用该引用