Java 문자열 연결의 성능 문제 분석
연결 N 문자열을 열로 하고, 반복적으로 문자열 연결 문자를 사용하려면 N의 제곱의 시간이 필요합니다. 가장 주요한 원인은 String 클래스가 변하지 않는 클래스이기 때문입니다. 즉, 두 문자열을 연결할 때 그들의 내용은 모두 한 번의 복사가 있어야 합니다.매번 연결할 때마다 기존의 두 문자열 대상은 변하지 않으며, 연결 후의 결과는 새로 생성된 대상이다.이런 방식은 시간 수요가 많을 뿐만 아니라 메모리에 대한 요구도 매우 높다.
만약 연결된 문자열이 매우 많다면, 문자열 연결자를 사용하는 계산 시간과 성능에 대한 소모는 추산하기 어려워진다.성능을 받아들일 수 있도록 String 대신 StringBuilder를 사용하여 문자열을 연결할 수 있습니다.
다음은 두 가지 방식의 테스트 코드입니다.
<span style="font-size:18px;">public static void main(String[] args) {
long start1 = System.currentTimeMillis();
String result1 ="";
for(int i = 0 ; i < 50000;i++){
result1 += String.valueOf(i);
}
long end1 = System.currentTimeMillis();
System.out.println("String Connect Time:"+(end1-start1)+"ms");
long start2 = System.currentTimeMillis();
StringBuilder result2 = new StringBuilder();
for(int i = 0 ; i < 50000;i++){
result2.append(i);
}
long end2 = System.currentTimeMillis();
System.out.println("StringBulider Connect Time:"+(end2-start2)+"ms");
}</span>
이 두 가지 방법의 차이는 매우 크다. 내가 한 테스트에서 두 번째 방법은 첫 번째 방법보다 4~5개의 수량급이 높다.연결 수가 증가함에 따라 두 가지 방식의 성능 격차도 더욱 뚜렷해진다.요약: 시스템이 성능에 대한 요구가 없으면 문자열 연결 문자를 사용하여 여러 문자열을 연결하지 마십시오.또 하나는 문자열 그룹을 사용하거나 문자열을 조합하지 않고 하나씩 처리할 수 있다는 것이다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.