首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

String.indexOf 性能测试

以前一直脑子里有一个固定的印象:

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

你可以去下载下来试试效果

感谢阅读,下次见~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180317G1BBMF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券