在Java代碼中,我覺得這樣的:在for聲明中調用.length()比在循環之前調用慢?
for (int i = 0; i < s.length(); i++) {
// do a lot of something
}
比這更慢:
int length = s.length();
for (int i = 0; i < length; i++) {
// do a lot of something
}
請告訴我,我是否正確。
在Java代碼中,我覺得這樣的:在for聲明中調用.length()比在循環之前調用慢?
for (int i = 0; i < s.length(); i++) {
// do a lot of something
}
比這更慢:
int length = s.length();
for (int i = 0; i < length; i++) {
// do a lot of something
}
請告訴我,我是否正確。
理論上,第一個代碼示例可能會比較慢,因爲它在每次迭代中調用s.length()
一次。但是有可能JVM會爲你優化第一段代碼。使用更簡單的方法,除非基準測試顯示:
最有可能不是。 – assylias 2012-07-14 22:24:02
's'的類型是什麼? – 2012-07-14 22:35:51
它取決於's.length()'的實現。什麼是's'? – 2012-07-15 04:07:47