rt.最近在看编码方面的文章,了解到 utf32 是定长编码,String.charAt 方法对此编码有更好的支持,于是写了段代码试了一下:
long start = System.nanoTime();
for (int i = 0; i < utf8.length(); i++) {
char c = utf8.charAt(i);
}
long end = System.nanoTime();
System.out.println(end - start);
start = System.nanoTime();
for (int i = 0; i < utf32.length(); i++) {
char c = utf32.charAt(i);
}
end = System.nanoTime();
System.out.println(end - start);
System.out.println("==========");
将这段代码放入 for 循环中输出如下
5435600
3786200
==========
5370700
200
==========
....
手动复制代码片段执行输出如下:
7608200
5690900
==========
5709800
4930700
==========
...
放入 for 循环中执行的代码,从第二次循环开始 utf32 耗时在 0-500 纳秒浮动 是代码哪里写的有问题吗? utf8 和 utf32 两个 String 对象是同一段一亿个字符的文本
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.