Pergunta

Na web app Estou cordas divisão e atribuição de nomes de ligação ou para coleções de cordas. Existe uma vantagem de desempenho significativa ao uso de stringbuilder para uma aplicação web?

EDIT: 2 funções: dividir um link em 5-10 cordas. Em seguida, reembalagem em outra string. Também eu anexar uma corda de cada vez para uma ligação cada vez que o link é clicado.

Foi útil?

Solução

Quantas cordas vai você ser concatenação? Sabe ao certo quantas haverá, ou não depender de quantos registros estão no banco de dados etc?

meu artigo sobre este assunto para mais detalhes e orientações - mas, basicamente, , estando em um aplicativo web não faz diferença para o quão caro concatenação é vs usando um StringBuilder.

EDIT: Eu tenho medo ainda não é totalmente clara da questão exatamente o que você está fazendo. Se você tem um conjunto fixo de strings para concatenar, e você pode fazer tudo de uma só vez, então é mais rápido e, provavelmente, mais legível para fazê-lo usando concatenação. Por exemplo:

string faster = first + " " + second + " " + third + "; " + fourth;

string slower = new StringBuilder().Append(first)
                                   .Append(" ")
                                   .Append(second)
                                   .Append(" ")
                                   .Append(third)
                                   .Append("; ")
                                   .Append(fourth)
                                   .ToString();

Outra alternativa é usar uma seqüência de formato é claro. Esta pode muito bem ser o mais lento, mas mais legível:

 string readable = string.Format("{0} {1} {2}; {3}",
                                 first, second, third, fourth);

A parte da sua pergunta mencionar "acrescentando um link de cada vez", sugere usando um StringBuilder para esse aspecto embora - qualquer coisa que leva naturalmente a um loop é mais eficiente (para moderada a grandes números) usando StringBuilder

.

Outras dicas

Você deve dar uma olhada este excelente artigo de Jon Skeet sobre concatenar strings.

Sim, concatenando seqüências regulares é caro (realmente acrescentar na corda até o fim de outro). Cada vez que uma string é alterado, .net cai a corda velha e cria um novo com os novos valores. É um objeto imutável.

EDIT:

stringbuilder deve ser usado com cautela, e avaliada como qualquer outra abordagem. Às vezes connactenting duas cordas juntos vai ser mais eficiente, e deve ser avaliada caso a caso.

Atwood tem um artigo interessante relacionado a isso.

Por que o desempenho seria diferente em uma aplicação web ou um aplicativo winforms?

Usando stringbuilder é uma questão de boa prática por causa da memória e alocação de objeto, as regras se aplicam, não importa por que você está construindo o código.

Se você estiver fazendo a corda em um loop com um elevado número de iterações, então é uma boa idéia para uso stringbuilder. Caso contrário, concatenação é sua melhor aposta.

Em primeiro lugar, Você ainda está escrevendo esta aplicação? Se sim então parar Performance Tuning! Em segundo lugar, Priorizar exatidão sobre velocidade. Legibilidade é muito mais importante, a longo prazo, por razões óbvias. Em terceiro lugar, não sabemos a situação exata e o código que você está escrevendo. Nós realmente não podemos aconselhá-lo se este micro otimização é importante para o desempenho do seu código ou não. Medir a diferença. Eu recomendo da Red Gate Formigas Profiler.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top