静态变量或属性的Android性能

Posted

技术标签:

【中文标题】静态变量或属性的Android性能【英文标题】:Android performance of static variable or property 【发布时间】:2012-02-25 13:17:06 【问题描述】:

您好,我想知道在 android 中使用静态值的性能方面什么更好。

1- 在类中创建一个公共静态变量

public static boolean _loadConfiguration = true;

2- 在类中创建一个获取/设置公共静态属性

private static boolean _loadConfiguration = true;

public static boolean LoadConfiguration() 
    return _loadConfiguration;


public static void LoadConfiguration(boolean loadConfiguration) 
    _loadConfiguration = loadConfiguration;

【问题讨论】:

【参考方案1】:

阅读Android: Designing for Performance,这是一篇很棒的文章。

简而言之,他们用Caliper 对系统进行了基准测试,得出的结论是您必须拥有Avoid Internal Getters/Setters:

“没有 JIT,直接字段访问比调用普通 getter 快 3 倍。使用 JIT(直接字段访问与访问本地一样便宜),直接字段访问大约比调用普通 getter 快 7 倍。这在 Froyo 中是正确的,但在 JIT 内联 getter 方法时会在未来得到改进。

【讨论】:

Rotemmiz:所以你说最好使用选项1:boolean xvalue = MyClass._loadConfiguration;比选项 2: boolean xvalue = MyClass.LoadConfiguration(); 确实,这适用于内部 getter/setter。【参考方案2】:

静态变量不需要获取/设置。您始终可以使用 className.staticVariable 获取它们。静态的获取/设置总是开销。

【讨论】:

谢谢 thinksteep,我知道,但我问使用选项 1 或选项 2 是否存在性能故障(我是 C# 程序员,现在从 Android 开始)

以上是关于静态变量或属性的Android性能的主要内容,如果未能解决你的问题,请参考以下文章

《android开发艺术探索》读书笔记(十五)--Android性能优化

静态方法或单例性能方面(Android)?

Android高性能编程基本规范

[Android] Android开发优化之——从代码角度进行优化

Android:通过静态变量传递值会导致安全问题吗?

Android性能优化:内存优化