您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如果性能很重要,是否应该使用Java的String.format()?

如果性能很重要,是否应该使用Java的String.format()?

我编写了一个小类进行测试,该类具有两者的更好性能,并且+领先于格式。以5到6的倍数进行尝试

import java.io.*;
import java.util.Date;

public class StringTest{

    public static void main( String[] args ){
    int i = 0;
    long prev_time = System.currentTimeMillis();
    long time;

    for( i = 0; i< 100000; i++){
        String s = "Blah" + i + "Blah";
    }
    time = System.currentTimeMillis() - prev_time;

    System.out.println("Time after for loop " + time);

    prev_time = System.currentTimeMillis();
    for( i = 0; i<100000; i++){
        String s = String.format("Blah %d Blah", i);
    }
    time = System.currentTimeMillis() - prev_time;
    System.out.println("Time after for loop " + time);

    }
}

对不同的N运行上面的结果表明,两者的行为均呈线性,但String.format慢5-30倍。

原因是在当前实现中,String.format首先使用正则表达式解析输入,然后填充参数。另一方面,与plus的连接通过javac(而不是JIT)进行优化,并StringBuilder.append直接使用。

java 2022/1/1 18:22:06 有454人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶