【发布时间】:2021-09-03 10:11:29
【问题描述】:
我知道StringBuilder 在涉及需要某种突变的操作时比String 快。但是,如果我只想访问特定字符而不需要其他操作,那么两者的charAt() 方法之间是否存在性能差异?
作为一个简单的例子,如果我需要打印字符串的备用字符,从第一个字符开始,下面给出的两种方法中是否有任何首选方法?
// 1
String dummyStr = "fhweyxnqwiynfgHINYUIYIOhuiw12341dfs";
for (int i = 0; i < dummyStr.length(); i += 2) {
System.out.print(dummyStr.charAt(i));
}
// 2
StringBuilder dummySb = new StringBuilder(dummyStr);
for (int i = 0; i < dummySb.length(); i += 2) {
System.out.print(dummySb.charAt(i));
}
此外,以这种方式(使用char[])这样做有什么好处/缺点吗?
// 3
char[] dummyArr = dummyStr.toCharArray();
for (int i = 0; i < dummyArr.length; i += 2) {
System.out.print(dummyArr[i]);
}
请注意:
对于这个问题,我只关心时间方面的性能,而不关心使用的额外内存。此外,System.out.print() 仅用于本示例的占位符操作。
【问题讨论】:
-
这取决于您的数据,所以如果您真的想知道是否有任何差异,请运行您自己的基准测试(也就是自己做research) 使用与您要检查的场景匹配的实际数据。但是,即使您可以衡量差异,我敢打赌,考虑到可能发生的所有其他情况,它对代码的整体性能没有任何影响。这是过早优化的一个例子,你应该继续前进,把时间花在真正重要的事情上。
标签: java string time stringbuilder