Pergunta

Eu encontrei isso em algum código de login produção Eu estava olhando recentemente ...

HttpContext.Current.Trace.Write(query + ": " + username + ", " + password));

... onde consulta é uma consulta SQL curto para usuários grab correspondentes. Será que isso tem qualquer tipo de impacto no desempenho? I assumir a sua muito pequena.

Além disso, qual é a finalidade deste tipo exato de traço, usando o contexto HTTP? Onde é que esses dados se rastreada para? Agradecemos antecipadamente!

Foi útil?

Solução

Sim, vai ter um impacto no desempenho sempre que o TRACE constante compilação condicional é definido durante a construção. Fazer qualquer coisa tem algum tipo de impacto:)

Quanto a saber se ou não isso tem um impacto significativo sobre uma aplicação. É altamente improvável que seria como rastreamento é projetado para ser executado e é executado em muitas aplicações de produção. Apenas um abuso do recurso deve levar a uma diferença de desempenho perceptível.

Mas, como sempre, não confia em mim, confie o profiler.

Outras dicas

Eu não tenho os pontos de reputação para comentário ainda, mas eu queria fazer uma declaração rápida sobre a resposta de Jonathan. Os números que vi parecem mostrar que não faz sentido usar stringbuilder por apenas um punhado de concatenações de cadeia. A sobrecarga de criar o objeto stringbuilder supera o benefício da velocidade concatenação.

A perda mais desempenho neste pedaço de código não está no traço, mas na concatenação através do uso do operador +. Isto faz algumas operações de memória ineficientes que podem bater uma operação IO em termos de desempenho. Eu alterá-lo para usar algo como String.Concat ou a classe StringBuilder (ou string.Format para que o assunto).

mensagens de rastreio pode ir para um monte de lugares diferentes. Você pode adicionar (ou remover) TraceListeners para o console, VisualStudio depuração Janela, arquivos, ou o log de eventos para citar alguns. Você pode até mesmo construir o seu próprio.

Além disso, você pode configurar o rastreamento para não fazer nada quando compilado para a liberação.

Assim, o impacto do uso de rastreamento pode variar muito, todo o caminho de zero a completamente atolar seu aplicativo, dependendo do que os ouvintes são ativos performance. A maioria dos ouvintes, porém, têm sobre o impacto que você esperaria. Demora cerca de tanto trabalho para escrever para um arquivo ou banco de dados, ou o console, e não Rastreamento não acrescentar que muito relativa sobrecarga para as atividades de I / O-bound.

E se trace está escrevendo para um arquivo de texto que vai custar mais do que escrever para o console IMHO

"Tracing adiciona uma sobrecarga adicional para os pedidos e não deve ser habilitado para aplicativos implementados. Trace.Write () declarações, no entanto, pode ser deixado em, porque eles são ignorados quando o rastreamento não está habilitado."

http://msdn.microsoft.com/en-us/library/ ms972204.aspx

Eu acho olhares trace Fonte em TraceLevel do seu interruptor antes de encaminhar mensagens para os ouvintes. Então, se mantivermos valor TraceLevel padrão do interruptor para "Error", então rastreamento sobrecarga seria muito reduzido apenas como "erro" vestígios seriam enviados para os ouvintes.

apenas um palpite ... Eu não tenho medido nada ainda. Atualizará se eu fizer.

2017 Atualização : parece ser um desaconselhável, mas uma forma muito útil de rastreamento / informações de registro para uma página .aspx navegador / acessível remotamente em um aplicativo asp.net.

https://msdn.microsoft. com / en-em / Library / z48bew18 (v = vs.71) .aspx

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