반응형
자바 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가 빠른 것은 아니기 때문에 용도에 있어서 잘 선택해야합니다.
반응형
'Programming > Java' 카테고리의 다른 글
[Java] int 정수 변수 비트의 1의 개수 세기 / 예제, 원리 (0) | 2021.06.12 |
---|---|
[Java] 삽입정렬 코드 /insertion sort (자바 예제, 시간복잡도 ) (0) | 2021.05.18 |
[Java] 버튼을 누르면 창 전환하기 / 자바 GUI/Swing 예제 (1) | 2021.02.28 |
[Java] 종료 버튼 만들기 (버튼을 누르면 프로그램 종료) 예제 /GUI (0) | 2021.02.26 |
[Java] 자바 인쇄 기능 만들기 예제 #1 (메모장을 이용한 텍스트 인쇄 / GUI) (1) | 2021.02.26 |
댓글