【发布时间】:2013-10-31 14:33:33
【问题描述】:
最近我们在工作中讨论了局部变量对 Java 代码的性能和可读性的影响。我的一些同事认为这样的声明
new DoSomethingCmd(new SelectionContext(context, keys), infoStuff.getCurrentRole().getRole_id()).execute(getResultContainer());
会给应用程序带来相当大的性能提升。他们愿意为此牺牲代码的可读性。他们声称这一点是对的吗?上面的版本是否比这个版本的性能要好得多?
final SelectionContext selectionContext = new SelectionContext(context, keys);
final String roleId = infoStuff.getCurrentRole().getRole_id();
final DeleteSomethingCmd deleteSomethingCmd = new DeleteSomethingCmd(selectionContext,roleId);
deleteSomethingCmd.execute(getResultContainer());
我意识到第一个语句本身并不难掌握,但是当您的大部分代码都采用这种结构时,复杂性会很快增加。
感谢您的意见。
【问题讨论】:
-
如果我理解了右上角的代码,您的同事似乎认为创建引用变量比创建匿名变量要慢。是对的吗?他们为什么这么认为?
-
我很高兴将这些优化留给内置优化器。他们擅长那个。更好的是我们查看的源代码易于理解。
-
除非您另有测量,否则您应该为清晰和简单而编写代码。这通常也足够快。当你已经衡量了一个性能问题时才考虑替代方案。通常,性能优化无济于事,只会增加复杂性。
标签: java performance code-readability