有时我会看到这样的代码:
if (id.split(":").length > 1) {
sub_id = id.split(":")[1];
parent_id = id.split(":")[0];
}
做这样的事情会不会更好(更快)
String [] ids = id.split(":");
if (ids.length > 1) {
sub_id = ids[1];
parent_id = ids[0];
}
这样您就不必多次调用“split()”,或者编译器/JIT 是否会进行此类优化?
最佳答案
我当然不希望 JIT 或编译器执行此类优化。它必须知道:
- 结果不会在调用之间“有用地”改变
- 没有人会利用每个方法调用产生单独数组的事实
- 没有人会利用每个方法调用产生不同字符串对象这一事实
JIT 或编译器似乎不太可能为此进行优化。
是的,使用第二种形式肯定更有效 - 我认为它也更具可读性。当更具可读性的代码也更高效时,这就非常清楚地表明了要使用的代码;)
关于通过编译器或 JIT 进行 java 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15339510/