본문 바로가기
Programming/Java

[Java] String vs StringBuilder 실행 시간 구하기/비교

by castberry_ 2021. 5. 5.
반응형

자바 currentTimeMillis()를 이용하여 실행시간을 구해보겠습니다.

currentTimeMillis()은 현재 시스템의 시간은 ms[밀리세컨트](1/1000 초)의 단위로 받아와 나중시간에서 처음시간을 빼는 것으로 실행시간을 구할 수 있습니다.

비교 대상은 String와 StringBuilder를 이용해 문자열 변수에 블로그의 이름인 'dinae'를 100000번 반복하여 추가해보겠습니다. 


728x90

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Random;
import java.util.Scanner;
 
/**
* String 변수와 StringBuiler 변수에 'dinae'을 10000번 더하기연산후 각각의 걸린 시간을 측정한다.
 * @author dinae
 */
public class StringBuilderTest{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        StringBuilder stringBuilder = new StringBuilder();
        String string = "";
        long time1;
        long time2;
        long timeString;
        long timeStringBilder;
        int i = 0;
        time1 = System.currentTimeMillis();
        for(i = 0; i < 100000; i++){
            string += "dinae";
        }
        time2 = System.currentTimeMillis();
        timeString = time2 - time1;
 
        time1 = System.currentTimeMillis();
        for(i = 0; i < 100000; i++){
            stringBuilder.append("dinae");
        }
        time2 = System.currentTimeMillis();
 
        timeStringBilder = time2 - time1;
 
        System.out.println("SringBuilder 시간(ms) = " + timeStringBilder);
        System.out.println("Sring 더하기 시간(ms) = " + timeString);
        input.close();
    }
 
}
cs

 

String 객체는 수정이 불가능한 Immutable(불변의) 객체입니다. 때문에 수정을 가하면 매번 새로운 객체가 생성되고 이는 상당한 부담이 됩니다. 

반면 StringBuilder객체는 편집이 가능하기때문에 새 객체를 생성하지 않기 떄문에 속도 차이가 있습니다. 

하지만 항상 StringBuilder가 빠른 것은 아니기 때문에 용도에 있어서 잘 선택해야합니다. 

반응형

댓글