编写代码时,我主要遵循的一件事是,如果看到某个对象属性或某个方法在同一方法中被多次访问,我倾向于将其分配给变量并在各处重复使用。
for i in List:
for u in [i]:
List[u].sort(reverse = True)
print(List)
我们可以看到List<ItemA> itemAList = alpha.doX(..., ..., ...)
.peek(item -> packagedItems.put(item.getName(), ...))
.peek(item -> readyItems.put(item.getName(), ..., ...)))
.map(item -> transform(item.getName(), ...))
.collect(toList());
已被使用多次。我通常将其移至变量并重新使用:
item.getName()
有时我也会在代码审查中提出相同的建议。但是,我现在想知道是否有必须从对象实例取消引用而不是直接能够从变量访问的性能开销吗?
围绕该实践有哪些想法?在什么情况下(em>(如果有的话)一个会比另一个更受青睐?
谢谢。
答案 0 :(得分:0)
(忽略第二个代码中的错误,item
已在使用中。)
当方法为final
时,编译器可能会内联,这取决于编译器确定该方法是否“足够简单”以进行内联。 Getter和Setter通常很简单,可以内联。
如果不是这样,那么JIT很可能迟早会在运行时内联吸气剂,因此item.getName()
的任何一种方式都将被item.name
取代
没有太多的性能问题。