Java 将数字快速插入字符串,按.format还是.replace?
我只想将字符串中的占位符设置为大循环中的连续数字。为方便起见,占位符为Java 将数字快速插入字符串,按.format还是.replace?,java,string,replace,formatting,string-formatting,Java,String,Replace,Formatting,String Formatting,我只想将字符串中的占位符设置为大循环中的连续数字。为方便起见,占位符为%d。使用String的.format或.replace方法,什么更快?因为我不知道响应,但我很好奇,我做了一个非常简单的测试并添加了指标,结果如下: 守则: @Test public void test(){ String original = "This is the phrase %d"; long init = System.currentTimeMillis(); for(int i = 0;
%d
。使用String的.format或.replace方法,什么更快?因为我不知道响应,但我很好奇,我做了一个非常简单的测试并添加了指标,结果如下:
守则:
@Test
public void test(){
String original = "This is the phrase %d";
long init = System.currentTimeMillis();
for(int i = 0; i < 100000; i++){
System.out.println(String.format(original, i));
}
long end = System.currentTimeMillis();
long init1 = System.currentTimeMillis();
for(int i = 0; i < 100000; i++){
System.out.println(original.replace("%d", String.valueOf(i)));
}
long end2 = System.currentTimeMillis();
System.out.println("Method 1: " + (end-init));
System.out.println("Method 2: " + (end2-init1));
}
@测试
公开无效测试(){
String original=“这是短语%d”;
long init=System.currentTimeMillis();
对于(int i=0;i<100000;i++){
System.out.println(String.format(original,i));
}
long end=System.currentTimeMillis();
long init1=System.currentTimeMillis();
对于(int i=0;i<100000;i++){
System.out.println(original.replace(“%d”,String.valueOf(i));
}
long-end2=System.currentTimeMillis();
System.out.println(“方法1:”+(end init));
System.out.println(“方法2:”+(end2-init1));
}
结果
方法1:1950方法2:1361
因此,我们可以假设.replace比String的格式化方法快两种方法都试过了吗?你的结果是什么?是否可以将数字格式化为固定位数?(如果是这样的话,创建一个字符数组来重用可能会很有帮助……)基本上您还没有在这里提供足够的信息。展示您迄今为止所做的工作,以及您的具体性能要求,将非常有帮助。@JonSkeet我非常专注于编码,尽管我只是想把这个问题带到房间里。很抱歉,我忘记了指南,真的需要仔细思考我的问题…这里有一些阅读@Kayaman谢谢!是我下一步正确执行基准测试的最佳时机:)我怀疑还有更快的选择,找出格式字符串的位置,创建适当的
char[]
,然后每次只替换相关字符。