以前一直脑子里有一个固定的印象:
String s = "abcdef";
s.indexOf('d') 的性能会比 s.indexOf("d") 快10倍左右。
以前也做过这方面的测试来支持这个结论。本来今天打算写一个测试,把这个结论分享给大家。测试后,让我大吃一惊,这个结论在JDK1.8里不成立了。
废话不多说,直接看测试代码和结果
private static final String TEXT2 = "我说道:“爸爸,你走吧。”他望车外看了看,说:“我买几个橘子去。你就在此地,不要走动。”我看那边月台的栅栏外有几个卖东西的等着顾客。走到那边月台,须穿过铁道,须跳下去又爬上去。父亲是一个胖子,走过去自然要费事些。w本来要去的,他不肯,只好让他去。";
@Test
public void test() {
int num = 10000000;
for (int i = 0; i
indexOfStringConst(num);
indexOfCharConst(num);
}
}
public void indexOfStringConst(int num) {
long starTime = System.currentTimeMillis();
for (int i = 0; i
TEXT2.indexOf("w");
}
long endTime = System.currentTimeMillis();
}
public void indexOfCharConst(int num) {
long starTime = System.currentTimeMillis();
for (int i = 0; i
TEXT2.indexOf('w');
}
long endTime = System.currentTimeMillis();
}
indexOfStringConst 耗时:20 毫秒
indexOfCharConst 耗时:245 毫秒
--------------------------------
indexOfStringConst 耗时:11 毫秒
indexOfCharConst 耗时:286 毫秒
--------------------------------
indexOfStringConst 耗时:0 毫秒
indexOfCharConst 耗时:239 毫秒
--------------------------------
indexOfStringConst 耗时:0 毫秒
indexOfCharConst 耗时:237 毫秒
--------------------------------
indexOfStringConst 耗时:0 毫秒
indexOfCharConst 耗时:226 毫秒
--------------------------------
indexOfStringConst 耗时:0 毫秒
indexOfCharConst 耗时:230 毫秒
--------------------------------
indexOfStringConst 耗时:0 毫秒
indexOfCharConst 耗时:227 毫秒
--------------------------------
indexOfStringConst 耗时:0 毫秒
indexOfCharConst 耗时:254 毫秒
--------------------------------
indexOfStringConst 耗时:0 毫秒
indexOfCharConst 耗时:221 毫秒
--------------------------------
indexOfStringConst 耗时:0 毫秒
indexOfCharConst 耗时:230 毫秒
--------------------------------
后面不用固定字符串,每次用新字符串对象测试,依然是这样。
String.indexOf(String) 性能要比 String.indexOf(char) 的性能好的多。
我现在得赶紧去改我之前写的那些indexOf(char)代码了。
测试代码已经上传到github:https://github.com/luoyongsir/study
你可以去下载下来试试效果
感谢阅读,下次见~
领取专属 10元无门槛券
私享最新 技术干货