Si tengo una aplicación WPF y para fines de depuración, hay mensajes que se muestran en la consola. ¿Afectará esto el rendimiento de la aplicación cuando está configurada como una Aplicación de Windows y no se muestra ninguna consola?es Console.WriteLine un cuello de botella en las aplicaciones de Windows?
Respuesta
El verdadero cuello de botella en Console.WriteLine() es en realidad escribir en la consola. Cuál es realmente costoso, particularmente cuando la consola necesita ser desplazada. También hay una sobrecarga considerable en el proceso de alojamiento de Visual Studio capturando la salida cuando no hay consola y mostrándola en la ventana Salida.
Ninguno de los cuales juega un rol después de implementar su aplicación. Pero sí, todas las llamadas a los métodos se están realizando y las cadenas se están formateando, solo cae en el cubo de bits en el último momento posible cuando la función api de Windows descubre que no hay consola.
Si su aplicación tiene una ejecución aceptable ahora, cuando se ejecuta en la compilación de depuración, no se preocupe. Si ve una ejecución menos que estelar en la compilación Release sin un depurador y cree que puede deberse a Console.WriteLine(), no dude en Buscar + Reemplazar en Debug.Print().
Un cuello de botella implica que es el punto más lento de su código. No podemos saber eso a menos que sepamos todo lo demás que estás haciendo.
¿Hay algún impacto en el rendimiento? Sí, probablemente. No está haciendo nada, está haciendo algo. ¿Va a ser suficiente para ser el cuello de botella de su programa, lo dudo mucho? ¿Va a ser suficiente incluso para tener un impacto notable, es posible, pero poco probable? Todo depende de qué más esté haciendo su programa y de cuánto está escribiendo en la consola (Tendría que ser bastante para que empiece a notar el tiempo que lleva).
Como se mencionó en el comentarios, puede usar Debug.WriteLine
en lugar de Console.WriteLine
para que pueda ver el resultado cuando se depura, pero cuando compila la versión Release no imprimirá esas instrucciones.
Hacer algo siempre lleva más tiempo que no hacer nada.
El acto de escribir texto en una consola nula no debería ser un gran golpe de rendimiento, pero lo que está pasando como parámetros y en qué volumen podría ser.
Mida el rendimiento real con y sin la salida de la consola para ver por sí mismo si su patrón de uso está dentro de sus tolerancias aceptables.
Debug.WriteLine() podría ser una mejor opción dependiendo de sus requisitos, ya que estos se excluirán automáticamente cuando compile para Release.
Tratar de construir y optimizar su propio marco de trabajo de registro raramente es el mejor enfoque.
¿Has visto algo así como log4net? Puede configurar varios appenders, incluido el inicio de sesión en la consola. También puede compilar apéndices asíncronos para disminuir realmente la sobrecarga de registro.
Erick
- 1. Rendimiento y cuello de botella de Zend_Search_Lucene?
- 2. Performance cuello de botella Url.Action - ¿puedo solucionarlo?
- 3. Encontrar 'bordes de cuello de botella' en un gráfico
- 4. Cómo usar VisualVM para detectar el cuello de botella/problema
- 5. Sharding (sic!) El nivel web para evitar un cuello de botella de equilibrio de carga?
- 6. ¿Qué es el cuello de botella de rendimiento de compilación de C++?
- 7. Console.WriteLine() dentro de un servicio de Windows?
- 8. He golpeado el cuello de botella de rendimiento DB, ¿dónde está ahora?
- 9. Conceptos erróneos sobre el cuello de botella de rendimiento más peligroso
- 10. ¿Cómo debo detectar el cuello de botella del tiempo de compilación en un gran proyecto de C++?
- 11. Encontrar cuellos de botella en la aplicación
- 12. Uso de Console.WriteLine dentro de una aplicación de Windows Forms
- 13. windows form .. console.writeline() ¿dónde está la consola?
- 14. ¿El subproceso console.writeline es seguro?
- 15. ¿La velocidad de un lenguaje de programación es importante para las aplicaciones web?
- 16. Redirecciona console.writeline desde la aplicación de Windows a una cadena
- 17. ¿Cómo implemento las aplicaciones de Windows escritas en MonoDevelop?
- 18. ¿Cuál es la diferencia entre las aplicaciones basadas en ventanas y las aplicaciones basadas en vista?
- 19. Windows proporciona un reloj monótonamente creciente para las aplicaciones
- 20. ¿Console.WriteLine bloquea?
- 21. creando subproyectos en botella
- 22. Cadenas de formato en el método Console.WriteLine
- 23. Cuellos de botella de rendimiento en llamadas concurrentes a System.currentTimeInMillis()
- 24. ¿Por qué las empresas todavía usan las aplicaciones Windows Forms y WPF en lugar de las aplicaciones web?
- 25. Despliegue de aplicaciones en Windows Phone 7
- 26. ¿Qué es un reinicio progresivo de las aplicaciones?
- 27. ¿El nombre de un paquete es único para las aplicaciones?
- 28. ¿Cuáles son las formas de encontrar cuellos de botella en una aplicación web?
- 29. ¿Desarrollando aplicaciones de Windows en Linux?
- 30. botella en el servidor de cherrypy + ssl
Bueno, para la depuración, ¿por qué no utilizar Debug.WriteLine? Saldrá a la ventana "Salida", pero puede redireccionarse a la ventana inmediata a través de las opciones de Visual Studio si no me equivoco. – erodewald
Mídelo y lo sabrás con certeza :-) –
Pregunta similar para asp.net, no garantiza que la respuesta sea la misma: http://stackoverflow.com/questions/137660/where-does-console-writeline-go-in-asp-net –