|
|
1
11
如果将a.length的结果存储在variable中,那么实际上不会更快。在任何情况下,都不值得担心这样一个微不足道的操作的性能。注意方法的可读性。 对我来说,数数更易读。 |
|
|
2
4
在我看来,比起先发制人的优化,更倾向于约定和可读性(在本例中是计数方法)。根据JoshBloch,最好不要优化代码,直到确定需要优化为止。 |
|
3
3
向下计数的速度往往较慢,尽管可能会丢失一条机器代码指令。在现代,表演不是那么简单。编译器具有面向前向循环的优化功能,因此反向循环可能会错过优化功能。高速缓存硬件是为正常正向扫描而设计的。所以不要担心这种微观的优化(如果你发现自己处于一种你真正需要的情况下,测量)。 |
|
|
4
1
我建议您在进行如此多的更改之前,确保有基准测试表明这是一个性能问题。我会去读任何一天最可读的(在我看来,这是一个向上计数)。 如果您正在进行微优化,并且不相信编译器会做正确的事情,那么也许您应该考虑在第二个循环中的变量中缓存a.length,以避免间接寻址。 |
|
|
5
0
我会说,如果有理由一种方式来计算与另一种方式(比如说列表中的项目顺序),那么不要为了遵守约定而绞尽脑汁(根据经验,数一数);如果没有——让下一个人更容易工作,只需遵守约定。 比较0和比较int不应该是一个问题… |
|
|
6
0
“我们应该忘记小效率,比如97%的时间:过早的优化是万恶之源”,唐纳德·克努斯说。 在这种情况下,我认为任何可能的性能提升都会被仅仅丧失可读性所抵消。编程时间比CPU时间要贵得多。 P.S.:为了进一步提高性能,您应该考虑将不等式测试为零。但要注意空数组;) |