我一直在Android Developers网站上阅读有关性能提示的建议,其中一项建议是use static final for constants.该示例说明了将static final用于int和字符串声明的情况.关于为什么在声明int时static final更快的解释很清楚.但是,对于字符串示例,它仅声明引用该字符串的代码将使用“相对便宜的字符串常量指令”.
我试图查看该指令在运行时是如何执行的,以及为什么它便宜一些,但却找不到任何东西.谁能详细说明字符串常量操作?
解决方法:
给定的示例声明了两个常量:
static final int intVal = 42;
static final String strVal = "Hello, world!";
由于使用final关键字,因此该类不需要< clinit>方法了.此外,在使用此常量的位置按原样使用int值.没有字段查找可找到对象的intVal字段,而是在所有地方都使用值42.
同样的优点也适用于字符串.使用常量的代码不必在类中查找字段,而可以使用对字符串位置的预编译引用.
这也使其他优化成为可能.例如,字符串的长度在编译时也是已知的,因此可以对其进行优化,并用其结果代替.
标签:performance,android
来源: https://codeday.me/bug/20191027/1945182.html