Prefácio
Recentemente, escrevi algo que pode ter considerado splicing de cordas e pensei em vários métodos, mas o desempenho é desconhecido, então vamos testá -lo abaixo. Vamos dar uma olhada na introdução detalhada juntos.
Código de amostra
public class Test {list <string> list = new ArrayList <> (); @EBE Antes public void init () {intstream.Range (0, 100000) .ForEach ((Index) -> {list.add ("str" + index);}); } @org.junit.test public void test1 () {string ss = ""; long startTime = System.currenttimemillis (); para (string s: list) {ss += s; } System.out.println (System.CurrentTimEmillis () - StartTime); } @org.junit.test public void test2 () {string ss = ""; long startTime = System.currenttimemillis (); para (string s: list) {ss = ss.concat (s); } System.out.println (System.CurrentTimEmillis () - StartTime); } @org.junit.test public void test3 () {stringbuilder ss = new stringbuilder (); long startTime = System.currenttimemillis (); para (string s: list) {ss.append (s); } System.out.println (System.CurrentTimEmillis () - StartTime); } @org.junit.test public void test4 () {long startTime = system.currenttimemillis (); StringUtils.Join (List); System.out.println (System.CurrentTimEmillis () - StartTime); } @org.junit.test public void test5 () {stringBuffer ss = new StringBuffer (); long startTime = System.currenttimemillis (); para (string s: list) {ss.append (s); } System.out.println (System.CurrentTimEmillis () - StartTime); }}O primeiro tipo: 33809
O segundo tipo: 8851
O terceiro tipo: 6
O quarto tipo: 12
O quinto tipo: 7
Desempenho: StringBuilder>StringBuffer>StringUtils.join>concat>+
Em seguida, analise -o do nível do código -fonte
StringBuilder:
Cada emenda
StringBuffer:
Comparado com o StringBuilder, há apenas mais um sincronizado; portanto, a diferença não é grande em um único caso de rosca.
Stringutils.join:
Você pode ver que ele ainda é implementado internamente com o StringBuilder, mas cada loop tem um separador extra para julgar, por isso é um pouco mais lento, mas não muito, e é uma ordem de magnitude no tempo.
Concat:
Pode -se observar que cada conexão gerará uma string, então a eficiência é muito baixa
+:
Por ser um operador sobrecarregado, o código -fonte não pode ser encontrado, mas a eficiência é a mais baixa de acordo com os resultados
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.