1. 연산자( )를 사용한 문자열 연결:
연산자를 사용하여 문자열을 연결하면 몇 가지 연결에는 편리하지만 문자열의 불변성으로 인해 대규모 작업에서는 성능 문제가 발생합니다.
새 문자열이 생성될 때마다 이전 문자열의 내용이 모두 복사되므로 대규모 연결의 경우 2차 시간이 발생합니다.
잘못된 예( 와 반복적으로 연결):
public String criaFatura(List<Item> itens) { String fatura = ""; for (Item item : itens) { fatura += item.toString(); // ineficiente para grandes listas } return fatura; }
2. StringBuilder를 사용하여 성능 향상:
를 사용하는 대신 문자열을 효율적으로 수정하고 필요에 따라 메모리를 동적으로 할당할 수 있는 StringBuilder를 사용하세요.
StringBuilder를 사용한 연결 시간은 선형이므로 성능이 크게 향상됩니다.
올바른 예(StringBuilder 사용):
public String criaFatura(List<Item> itens) { StringBuilder fatura = new StringBuilder(itens.size() * 80); // pré-alocação for (Item item : itens) { fatura.append(item.toString()); } return fatura.toString(); }
3. 성능 비교:
연산자를 최적화하기 위해 Java 6이 개선된 후에도 StringBuilder를 사용하는 것이 계속해서 더 효율적입니다. 테스트 머신에서 StringBuilder를 사용하는 것은 100개 항목이 있는 시나리오에서 연산자보다 6.5배 더 빨랐습니다.
사전 할당이 없는 최적화의 예:
public String criaFatura(List<Item> itens) { StringBuilder fatura = new StringBuilder(); // sem pré-alocação for (Item item : itens) { fatura.append(item.toString()); } return fatura.toString(); }
4. 이야기의 교훈:
많은 문자열을 연결하는 데 사용하지 마십시오. 연결 수가 늘어나면 성능이 금새 감당할 수 없을 정도로 커집니다.
대량 연결을 위해서는 StringBuilder.append 또는 문자 배열과 같은 대안을 사용하세요.
5. 다른 대안:
StringBuilder 외에도, 특히 성능을 더 세밀하게 제어해야 하는 경우 대규모 처리를 위해 또는 문자열을 보다 효율적으로 결합하기 위해 문자 배열을 사용하는 것을 고려할 수 있습니다.
결론:
StringBuilder를 사용하여 문자열을 효율적으로 연결하세요.
연결 수가 증가하면 성능이 크게 저하되므로 루프나 대량의 문자열에 연산자를 사용하지 마십시오.
책의 예:
위 내용은 항목 문자열 연결 성능에 주의하세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!