java - 什么更有效率?存储变量引用与不存储变量引用(Android 中的上下文)

标签 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 doSomeStuffB(){
  //...
  Resources r = getContext().getResources();
  r.getDrawable(R.drawable.ic_launcher);
  r.getDrawable(R.drawable.ic_arrow);
  //...
}

哪种风格更好?

最佳答案

就像性能和调优方面的许多事情一样,正确的答案是“视情况而定”。 99% 的情况下,额外的 HashMap 取消引用与变量引用之间的差异并不是最大的(甚至是值得注意的)性能问题。诀窍是了解何时可能会出现问题(例如,紧密循环中的频繁调用)。

在单个方法中,我倾向于使用选项 B 主要是为了提高可读性。

关于java - 什么更有效率?存储变量引用与不存储变量引用(Android 中的上下文),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28446653/

相关文章:

android - 将按钮的位置设置为屏幕上的随机点? - 安卓

c# - 枚举 Hashset 的速度

javascript - 如何计算 JavaScript 中小数点后零的个数?

java - 暂停直到函数完成运行

java - 如何在jboss中修改standalone-full-ha.xml

java - 如何使用 selenium 和 junit 测试多个浏览器(版本)

javascript - Cordova RSS 提要链接不会在外部浏览器中打开

java - 使用 Spark java 查找最大行号

Android的notifyDataSetChanged()仅最后添加的项目

Python 子进程模块比命令慢得多(不推荐)