这绝对是主观的,但我想尽量避免它变得有争议.我认为如果人们适当地对待它可能是一个有趣的问题.
对这个问题的想法来自评论跟帖从我的回答到:"你恨你喜欢的语言什么的五件事?" 问题.我争辩说C#中的类应该默认密封 - 我不会把我的推理放在这个问题上,但我可以写一个更全面的解释作为这个问题的答案.我对评论中讨论的热度感到惊讶(目前有25条评论).
那么,你持有什么有争议的意见?我宁愿避免那种以相对较少的基础(例如括号放置)而变得非常宗教的东西,但是例子可能包括诸如"单元测试实际上并不十分有用"或"公共领域真的很好"之类的东西.重要的是(对我来说,无论如何)是你有理由支持你的意见.
请提出您的意见和推理 - 我鼓励人们投票支持有争议和有趣的意见,无论您是否恰好同意这些意见.
我一直在寻找一些Java基本集合(的宝库,fastutil,HPPC)和我已经注意到,类变量有时声明为图案final的局部变量.例如:
public void forEach(IntIntProcedure p) {
final boolean[] used = this.used;
final int[] key = this.key;
final int[] value = this.value;
for (int i = 0; i < used.length; i++) {
if (used[i]) {
p.apply(key[i],value[i]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经完成了一些基准测试,看起来这样做会稍快一点,但为什么会这样呢?我试图理解如果函数的前三行被注释掉,Java将采取哪些不同的做法.
注意:这似乎与这个问题类似,但这是针对c ++的,并没有说明它们被声明的原因final.
我有一个非常大的程序,我一直在visual studio下编译(v6然后迁移到2008).我需要可执行文件尽可能快地运行.该程序花费大部分时间处理各种大小的整数,并且IO很少.
显然我会选择最大化优化,但似乎有很多事情可以做,而不是在优化的标题下,这仍然会影响可执行文件的速度.例如,选择__fastcall调用约定或将结构成员对齐设置为大数.
所以我的问题是:我是否应该使用其他编译器/链接器选项来使程序更快,而不是从"属性"对话框的"优化"页面控制.
编辑:我已经广泛使用了分析器.