Java 문자열 연결의 성능 문제 분석

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개의 수량급이 높다.연결 수가 증가함에 따라 두 가지 방식의 성능 격차도 더욱 뚜렷해진다.
요약: 시스템이 성능에 대한 요구가 없으면 문자열 연결 문자를 사용하여 여러 문자열을 연결하지 마십시오.또 하나는 문자열 그룹을 사용하거나 문자열을 조합하지 않고 하나씩 처리할 수 있다는 것이다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기