[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.)