我是 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
}
那会怎样?
谢谢,我知道这可能是吹毛求疵,并没有太大的不同,但我宁愿以正确的方式学习这些常见的任务。