Qual é a maneira mais eficiente de concatenar seqüências de caracteres?
StringBuilder
casos de uso podem ser encontradas aqui .
String.Format
em esteróides. O que, em termos de desempenho, é um pouco mais lento em um liners do que +
e String.Concat
, mas muito melhor do que aqueles, embora mais lento do que StringBuilder
em várias chamadas. Na prática, as diferenças de desempenho são tais que, se eu tivesse que escolher apenas uma maneira de concatenar, escolheria interpolações de strings usando $
... Se duas maneiras, adicione StringBuilder
à minha caixa de ferramentas. Com essas duas maneiras que você está definido.
String.Join
resposta abaixo não faz +
justiça e é, na prática, uma péssima maneira de concatenar strings, mas é surpreendentemente rápida em termos de desempenho. A resposta porque é interessante. String.Concat
e String.Join
ambos podem atuar em matrizes, mas String.Join
na verdade são mais rápidos. Aparentemente, String.Join
é bastante sofisticado e mais otimizado do que String.Concat
, em parte porque opera de maneira semelhante ao StringBuilder
que calcula primeiro o comprimento da string e depois constrói a string que se beneficia desse conhecimento usando o UnSafeCharBuffer.
String.Join
também requer a construção de uma matriz que parece ineficiente, certo? ... Acontece que, +
e de String.Concat
qualquer maneira, constrói matrizes para seus constituintes. Conseqüentemente, criar manualmente uma matriz e alimentá-la String.Join
é comparativamente mais rápido ... no entanto, StringBuilder
ainda supera String.Join
em todos os aspectos práticos, enquanto $
é apenas um pouco mais lento e muito mais rápido em longas seqüências de caracteres ... para não mencionar que é complicado e feio de usar String.Join
se você tiver para criar uma matriz para ele no local.