[String형 vs StringBuilder] 문자열 조합에서 처리 속도가 다릅니다.
9731 단어 StringBuilderstringJava
개시하다
Java로 문자열 연결을 할 때 String형+=
으로 연결하거나 StringBuilderappend()
로 연결하는 두 가지 방법이 있다.
결과는 모두 같지만 처리 속도에 차이가 있을 수 있다.
스트링 할 때.
예를 들면 이런 코드.String stringResult = null;
// Stringオブジェクトによる文字列結合
for (int i = 0; i < 10; i++) {
String str = Integer.toString(i);
stringResult += str;
}
스트링형은 스트링 대상이기 때문에 스트링형 변수가 선포된다 = 스트링 대상이 탄생한다.
따라서 문자열이 결합된 시간stringResult += str;
에 String 객체가 생성됩니다.
즉, String 대상은 for 문장의 순환 횟수만 생성한다.
StringBuilder에서 할 때.
예를 들면 이런 코드.StringBuilder sb = new StringBuilder();
// StringBuilderによる文字列結合
for (int j = 0; j < 10; j++) {
sb.append(Integer.toString(j));
}
결과는 String의 예와 같습니다.
그러나 String 객체는 append()
에 작성되지 않습니다.끝까지 추가할 거예요.
String 객체가 생성된 양이 없으므로 처리 속도가 빠릅니다.
속도가 얼마나 달라요?
다음 절차에 따라 String과 StringBuilder 처리 시간의 차이를 측정합니다.public class StringBuilderSample{
public static void main(String[] args) {
final int MAX_COUNT = 100;
System.out.println("結合回数:" + MAX_COUNT + "回のとき");
/********************* String型の場合 *********************/
String stringResult = null;
// Stringでの処理にかかった時間
long sTime;
// 開始時間
long startTime = System.nanoTime();
// String型による文字列結合
for (int i = 0; i < MAX_COUNT; i++) {
String str = Integer.toString(i);
stringResult += str;
}
// 終了時間
long endTime = System.nanoTime();
// 処理にかかった時間を算出
sTime = endTime - startTime;
System.out.println("Stringでの処理時間:" + sTime + "ナノ秒");
/********************* StringBuilderの場合 *********************/
StringBuilder sb = new StringBuilder();
// StringBuilderでの処理にかかった時間
long sbTime;
// 開始時間
startTime = System.nanoTime();
// StringBuilderによる文字列結合
for (int j = 0; j < MAX_COUNT; j++) {
sb.append(Integer.toString(j));
}
// 終了時間
endTime = System.nanoTime();
// 処理にかかった時間を算出
sbTime = endTime - startTime;
System.out.println("StringBuilderでの処理時間:" + sbTime + "ナノ秒");
System.out.println("StringBuilderの方が " + (sTime - sbTime) + " ナノ秒速い");
}
}
문자열 병합 MAX_COUNT
횟수의 처리 속도를 표시하는 프로그램입니다.
다음은 MAX_COUNT
의 값을 1001000, 1만, 10만으로 늘리면서 처리 시간의 차이를 살펴본다.
그나저나 나초는 10^(-9)초(=0.0억1초)다.
100회 실행 시
1000회 실행 시
1만 회 실행 시
약 0.57초 빠르다
10만 회 실행 시
빠르다
StringBuilder가 더 빠릅니다!
1000회 정도면 많게는 마이크로초(10^(-6) 단위여서 크게 신경 쓰지 않는다.
1만 건이 넘으면 처리 시간의 차이를 의식하게 된다.
스트링블러더를 몇 번 실행하든 빠르기 때문에 특별한 이유가 없다면 문자열 조합은 스트링블러더를 사용하는 것이 좋다.
201807/21 추기: 속편→[java] appeend에서 "+"를 사용하지 않습니다!
Reference
이 문제에 관하여([String형 vs StringBuilder] 문자열 조합에서 처리 속도가 다릅니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Sirloin/items/2455ee3a8bbbfb447abb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
예를 들면 이런 코드.
String stringResult = null;
// Stringオブジェクトによる文字列結合
for (int i = 0; i < 10; i++) {
String str = Integer.toString(i);
stringResult += str;
}
스트링형은 스트링 대상이기 때문에 스트링형 변수가 선포된다 = 스트링 대상이 탄생한다.따라서 문자열이 결합된 시간
stringResult += str;
에 String 객체가 생성됩니다.즉, String 대상은 for 문장의 순환 횟수만 생성한다.
StringBuilder에서 할 때.
예를 들면 이런 코드.StringBuilder sb = new StringBuilder();
// StringBuilderによる文字列結合
for (int j = 0; j < 10; j++) {
sb.append(Integer.toString(j));
}
결과는 String의 예와 같습니다.
그러나 String 객체는 append()
에 작성되지 않습니다.끝까지 추가할 거예요.
String 객체가 생성된 양이 없으므로 처리 속도가 빠릅니다.
속도가 얼마나 달라요?
다음 절차에 따라 String과 StringBuilder 처리 시간의 차이를 측정합니다.public class StringBuilderSample{
public static void main(String[] args) {
final int MAX_COUNT = 100;
System.out.println("結合回数:" + MAX_COUNT + "回のとき");
/********************* String型の場合 *********************/
String stringResult = null;
// Stringでの処理にかかった時間
long sTime;
// 開始時間
long startTime = System.nanoTime();
// String型による文字列結合
for (int i = 0; i < MAX_COUNT; i++) {
String str = Integer.toString(i);
stringResult += str;
}
// 終了時間
long endTime = System.nanoTime();
// 処理にかかった時間を算出
sTime = endTime - startTime;
System.out.println("Stringでの処理時間:" + sTime + "ナノ秒");
/********************* StringBuilderの場合 *********************/
StringBuilder sb = new StringBuilder();
// StringBuilderでの処理にかかった時間
long sbTime;
// 開始時間
startTime = System.nanoTime();
// StringBuilderによる文字列結合
for (int j = 0; j < MAX_COUNT; j++) {
sb.append(Integer.toString(j));
}
// 終了時間
endTime = System.nanoTime();
// 処理にかかった時間を算出
sbTime = endTime - startTime;
System.out.println("StringBuilderでの処理時間:" + sbTime + "ナノ秒");
System.out.println("StringBuilderの方が " + (sTime - sbTime) + " ナノ秒速い");
}
}
문자열 병합 MAX_COUNT
횟수의 처리 속도를 표시하는 프로그램입니다.
다음은 MAX_COUNT
의 값을 1001000, 1만, 10만으로 늘리면서 처리 시간의 차이를 살펴본다.
그나저나 나초는 10^(-9)초(=0.0억1초)다.
100회 실행 시
1000회 실행 시
1만 회 실행 시
약 0.57초 빠르다
10만 회 실행 시
빠르다
StringBuilder가 더 빠릅니다!
1000회 정도면 많게는 마이크로초(10^(-6) 단위여서 크게 신경 쓰지 않는다.
1만 건이 넘으면 처리 시간의 차이를 의식하게 된다.
스트링블러더를 몇 번 실행하든 빠르기 때문에 특별한 이유가 없다면 문자열 조합은 스트링블러더를 사용하는 것이 좋다.
201807/21 추기: 속편→[java] appeend에서 "+"를 사용하지 않습니다!
Reference
이 문제에 관하여([String형 vs StringBuilder] 문자열 조합에서 처리 속도가 다릅니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Sirloin/items/2455ee3a8bbbfb447abb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
StringBuilder sb = new StringBuilder();
// StringBuilderによる文字列結合
for (int j = 0; j < 10; j++) {
sb.append(Integer.toString(j));
}
다음 절차에 따라 String과 StringBuilder 처리 시간의 차이를 측정합니다.
public class StringBuilderSample{
public static void main(String[] args) {
final int MAX_COUNT = 100;
System.out.println("結合回数:" + MAX_COUNT + "回のとき");
/********************* String型の場合 *********************/
String stringResult = null;
// Stringでの処理にかかった時間
long sTime;
// 開始時間
long startTime = System.nanoTime();
// String型による文字列結合
for (int i = 0; i < MAX_COUNT; i++) {
String str = Integer.toString(i);
stringResult += str;
}
// 終了時間
long endTime = System.nanoTime();
// 処理にかかった時間を算出
sTime = endTime - startTime;
System.out.println("Stringでの処理時間:" + sTime + "ナノ秒");
/********************* StringBuilderの場合 *********************/
StringBuilder sb = new StringBuilder();
// StringBuilderでの処理にかかった時間
long sbTime;
// 開始時間
startTime = System.nanoTime();
// StringBuilderによる文字列結合
for (int j = 0; j < MAX_COUNT; j++) {
sb.append(Integer.toString(j));
}
// 終了時間
endTime = System.nanoTime();
// 処理にかかった時間を算出
sbTime = endTime - startTime;
System.out.println("StringBuilderでの処理時間:" + sbTime + "ナノ秒");
System.out.println("StringBuilderの方が " + (sTime - sbTime) + " ナノ秒速い");
}
}
문자열 병합 MAX_COUNT
횟수의 처리 속도를 표시하는 프로그램입니다.다음은
MAX_COUNT
의 값을 1001000, 1만, 10만으로 늘리면서 처리 시간의 차이를 살펴본다.그나저나 나초는 10^(-9)초(=0.0억1초)다.
100회 실행 시
1000회 실행 시
1만 회 실행 시
약 0.57초 빠르다
10만 회 실행 시
빠르다
StringBuilder가 더 빠릅니다!
1000회 정도면 많게는 마이크로초(10^(-6) 단위여서 크게 신경 쓰지 않는다.
1만 건이 넘으면 처리 시간의 차이를 의식하게 된다.
스트링블러더를 몇 번 실행하든 빠르기 때문에 특별한 이유가 없다면 문자열 조합은 스트링블러더를 사용하는 것이 좋다.
201807/21 추기: 속편→[java] appeend에서 "+"를 사용하지 않습니다!
Reference
이 문제에 관하여([String형 vs StringBuilder] 문자열 조합에서 처리 속도가 다릅니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Sirloin/items/2455ee3a8bbbfb447abb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([String형 vs StringBuilder] 문자열 조합에서 처리 속도가 다릅니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Sirloin/items/2455ee3a8bbbfb447abb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)