kom*_*men 2 java performance for-loop
我在java程序中有一个for循环,它循环遍历一组映射.
在循环内部,我有大约10个不同的if语句,它们检查每个映射中每个键的名称.
例:
for (<String, Object> map : object.entrySet()) {
if (map.getKey().equals.("something") {
do_something;
continue;
}
if (map.getKey().equals.("something_else") {
do_something_else;
continue;
}
if ...
}
Run Code Online (Sandbox Code Playgroud)
添加像这样的continue语句时,我是否获得了任何性能?
当我在IDE中单步执行代码而没有这些continue语句时,即使第一个if语句匹配,也会对每个if语句进行测试.
如果我有这样的和第一个if匹配,for循环将跳过接下来的9个if语句并继续下一个对象.也许编译后的代码会以不同的方式处理它,添加的continue语句实际上会使循环更慢?
而不是一直使用continue,getKey()只做一次并使用else if:
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
if (key.equals("something")) {
// ...
} else if (key.equals("something else")) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
或使用switch声明:
for (Map.Entry<String, Object> entry : map.entrySet()) {
switch (entry.getKey()) {
case "something":
// ...
break;
case "something else":
// ...
break;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
726 次 |
| 最近记录: |