哪个循环更快,甚至有所作为?
x
或
final int cSize = getSize();
for(lineCount = 0; lineCount <= cSize; lineCount++) {
// Do something!
}
for(lineCount = 0; linecount <= getSize(); lineCount++) {
// Do something!
}
是一个简单的吸气者:
getSize()
答案 0 :(得分:2)
假设this.size
不 final,这两个循环有不同的语义:
size
的变化作出反应;它将根据cSize
变量的要求执行多次。size
的更改作出反应。如果size
增加或减少,循环迭代次数也会增加或减少。就性能而言,Java的即时编译器非常智能,可以直接用于this.size
变量,有效地绕过了getter。这会产生非常相同的性能。
答案 1 :(得分:-3)
使用此示例测试不同的for循环:
-bin
--www
routes
-index.js
views
-partials
--footer.ejs
--head.ejs
--header.ejs
--javascripts.ejs
-error.ejs
-index.ejs
app.js
package.json
结果
对于每个循环:: 108 ms
使用collection.size():: 39 ms
使用[int size = list.size(); int j = 0; j&lt;大小; j ++] :: 4 ms
使用[int j = list.size(); j>大小; j--] :: 0 ms