Pergunta

É sexta-feira tempo refactor !!!

Eu tenho um objeto que eu uso para gerar instruções SQL.

oDb.From é definido uma vez. Então metadados podem adicionar juntar-se (s) ao longo do tempo até que nós combinamos tudo e passá-lo de volta.

Assim, o Q é, O que # de vezes que eu continuo sintaxe oDb.From + = antes de substituí-lo com sbFrom.Append ()

é que # 3, 4 ou 15 vezes?

Ou é realmente um comprimento de emissão de conteúdo, e em caso afirmativo, qual é a mágica #?

TIA

Foi útil?

Solução

Leia http://www.codinghorror.com/blog/archives/001218. html

A classe StringBuilder é projetado para cenários onde você está construindo cadeias de mamute, e usando concatenação normal, realmente seria muito lento.

As chances são de que para o tipo de comprimentos de cadeia que você está lidando com isso realmente não vai fazer qualquer diferença em tudo -. Apenas use o que você está mais confortável com

Outras dicas

regra totalmente não científica de ouro:. Eu faria isso para qualquer coisa mais de três elementos - não por causa do aumento de desempenho, mas um pouco fora de (espero) bom hábito

Se eu tiver que acrescentar mais de dois elementos para uma cadeia, eu quase sempre usar StringBuilder (acho que se eu acrescentar mais de dois, inevitavelmente haverá mais como as pessoas começam a acrescentar ao meu código ... tão StringBuilder é já lá para eles).

Eu diria que qualquer coisa que você espera para passar por cima 1-5MB de comprimento ou qualquer coisa que alocações lotes de cordas em pequenos pedaços.

Não é um total não-científica - Eu li um artigo era uma vez onde em .NET construtor corda torna-se realmente mais eficiente depois de 5 concatenações. Isto é, quando eu normalmente usar um Builder cadeia.

Também - Eu acho que a legibilidade realmente entra em jogo em relação a este e eu também preferem formato de cadeia em alguns casos sobre ambos

.

Eu uso StringBuilder quando o número de concatenação em um algoritmo crescer ao longo O (n). Se o número de concatenação é O (1), a maior parte do tempo legibilidade sofrer por nada (excepto se a cadeia é muito grande, o que não é muito frequentemente).

Ou quando eu sei que não é uma cadeia que vai se tornar grande o suficiente. (Mais de 100 mil caracteres)

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