dri*_*nif 15 java performance code-readability
最近我们讨论了局部变量对Java代码的性能与可读性的影响.我的一些同事的意见是这样的声明
new DoSomethingCmd(new SelectionContext(context, keys), infoStuff.getCurrentRole().getRole_id()).execute(getResultContainer());
Run Code Online (Sandbox Code Playgroud)
将为应用程序提供相当大的性能提升.他们愿意为此牺牲代码可读性.他们是否正确地声称这个?上述版本的性能是否比这个版本高得多?
final SelectionContext selectionContext = new SelectionContext(context, keys);
final String roleId = infoStuff.getCurrentRole().getRole_id();
final DeleteSomethingCmd deleteSomethingCmd = new DeleteSomethingCmd(selectionContext,roleId);
deleteSomethingCmd.execute(getResultContainer());
Run Code Online (Sandbox Code Playgroud)
我意识到第一个语句本身并不难以掌握,但是当大多数代码都是这样构造时,复杂性会相当快.
谢谢您的意见.
SJu*_*n76 15
"优化"版本唯一能做的就是堆栈中少了几个变量,稍微增加了内存消耗.应该仔细衡量绩效(谷歌如何对问题进行基准测试),但我严重怀疑它有任何明显的影响.
此外,花费时间来改善一段经常不使用的代码的性能只是浪费开发人员的时间,这是昂贵的.
在这种情况下,可读性应该赢得一天.
编辑:无论如何,如果你使用适当的缩进,我不认为这两个版本在可读性方面有太大的不同:
new DoSomethingCmd(
new SelectionContext(context, keys),
infoStuff.getCurrentRole().getRole_id()
).execute(getResultContainer());
Run Code Online (Sandbox Code Playgroud)
本文的优点是您没有不再需要的已定义变量(selectionContext,roleId)(因此,当您再次阅读该方法时,它们不会与更多"持久"变量混合).无论如何,这是可以解释的; 最重要的是,你不应该担心优化,除非你有动机这样做.
除此之外,还有一些Java编程指南可以为您提供真正有用的技巧(vg StringBuilder用于连接字符串).
ars*_*jii 14
他们是否正确地声称这个?
不,他们不是.将东西存储在局部变量中然后随后读取它的成本接近0,就这么简单 - 这绝对不是你应该花时间优化,甚至担心这件事.不要将所有内容放在一条高度复杂的线路中,从而牺牲可读性.
| 归档时间: |
|
| 查看次数: |
2399 次 |
| 最近记录: |