【发布时间】:2013-02-26 16:28:55
【问题描述】:
我是 Android 开发人员,对 Java 并不陌生,但我对性能的最佳实践有一些疑问。我会从我的代码中给出一些示例,以便您做出决定。
字符串连接
url = "http://www.myserver." + domain + "/rss.php?"
+ rawType + rawCathegory + rawSubCathegory + rawLocality
+ rawRadius + rawKeyword + rawPriceFrom + rawPriceto;
据我所知,这会在我的 url 变量创建之前创建 11 个字符串对象,对吧?
我被教导要使用 StringBuilder,但我的问题是,为了提高效率,最少要连接多少字符串?我认为使用它连接两个字符串没有多大意义,对吧?
局部变量
有时我会尝试像这样“链接”方法调用
FilterData.getInstance(context).getFilter(position).setActivated(isActivated);
天真地避免变量分配,但它比这更快吗?
FilterData filterData = FilterData.getInstance(context);
Filter filter = filterData.getFilter(position);
filter.setActivated(isActivated);
我认为应该这样做,因为我为自己保存了一个局部变量,但是如果方法名称很长等,它就会变得不可读。
循环
http://developer.android.com/training/articles/perf-tips.html 说增强的 for 循环比常规 for 循环快 3 倍,这很好,而且更容易编写,但是,如果我需要索引怎么办?知道,在增强的 for 循环中,我需要自己跟踪它,就像这样
int index = 0;
for(Object obj : objects) {
// do stuff
index++;
}
这仍然比常规循环快吗?
for(int i = 0; i < objects.size(); i++) {
// do stuff
}
我认为增强的 for 循环可能会对该限制进行优化,所以如果 size() 对此进行了优化
int size = objects.size();
for(int i = 0; i < size; i++) {
// do stuff
}
那会怎么样?
谢谢,我知道这可能会吹毛求疵,并不会产生太大影响,但我宁愿以正确的方式学习这些常见任务。
【问题讨论】:
-
除非你注意到你的代码很慢,否则不要为小事操心。不要prematurely optimize,尤其是如果它使代码的可读性降低。
标签: java android performance