【发布时间】:2017-03-19 23:44:09
【问题描述】:
每次我编码时,我都会在创建更多变量和使用方法之间进退两难,这会使代码更清晰但不太理想?您能告诉我什么对我们的应用程序性能更好吗?
例如:
protected static <T> void exch(List<T> list, Object o1, Object o2) {
list.set(list.indexOf(o1), list.set(list.indexOf(o2), list.get(list.indexOf(o1))));
}
我应该使用:
indexOf(o1)
两次或改为使用临时变量?
PS 只是为了让你明白。我正在为我的大学项目编写几种类型的排序方法。我们正在对包含约 150k 个元素的列表进行排序。我真的很想得到最好的表现。
【问题讨论】:
-
如果你排序,你不应该在 objects 上交换,而是在 indices 上交换。
-
您是否考虑过使用临时变量可能会使代码更清晰?因为 1 行的信息会更少。
-
好吧,也许你是对的。但是内存呢?每次比较它们时创建新变量真的值得吗?我听说垃圾收集器很慢:/
-
@classOlek:自己衡量性能,看看每个人的表现如何(制作局部变量与不制作)。我不认为引入本地 int 变量会影响垃圾回收,因为这是针对对象的。
-
不离开方法的对象通常可以被 JIT 编译器虚拟化,所以它们不会被 GC'd。但在这种情况下,类型将是
int,它不由垃圾收集器管理。
标签: java performance list swap indexof