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 对象是同一段一亿个字符的文本