1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import java.util.Random; public class Main { public static void main(String[] args) { Random r = new Random(); long string = System.currentTimeMillis(); for(int i=0; i<1000000; i++) { int rand = r.nextInt(9); String s = String.format("Random int is %d.", rand); System.out.println(s); } string = System.currentTimeMillis() - string; long stringbuilder = System.currentTimeMillis(); for(int i=0; i<1000000; i++) { int rand = r.nextInt(9); String s = new StringBuilder().append("Random int is ").append(rand).append(".").toString(); System.out.println(s); } stringbuilder = System.currentTimeMillis() - stringbuilder; System.out.println(String.format("String.format is %dms while StringBuilder is %dms", string, stringbuilder)); } } | cs |
결과(출력용 Random int is~~부분 지우고)
String.format is 10025ms while StringBuilder is 6878ms
...?
String.format은 String 객체 하나만 생성되는거고 StringBuilder는 StringBuilder 객체와 String 객체 두개가 생성되는거 아님?
왜 String.format이 더 느리지
이유 아시는분?
리턴 타입이 스트링 이라는건 새로운 스트링을 생성하여 리턴 한다는 의미에요 - dc App