1. 연산자( )를 사용한 문자열 연결:
연산자를 사용하여 문자열을 연결하는 것은 몇 가지 연결에는 편리하지만 문자열의 불변성으로 인해 대규모 작업에서는 성능 문제가 발생합니다.
새 문자열이 생성될 때마다 이전 문자열의 내용이 모두 복사되므로 큰 연결의 경우 2차 시간이 발생합니다.
잘못된 예( 과의 반복 연결):
public String criaFatura(List- 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- 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- 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를 사용하여 문자열을 효율적으로 연결합니다.
연결 수가 증가하면 성능이 크게 저하되므로 루프나 대량의 문자열에 연산자를 사용하지 마십시오.
책의 예:
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3