Datapayasadas

diciembre 21, 2011

Performance Tunning: Identificando cuellos de botella

Filed under: .Net, ASP.NET, Herramientas — Etiquetas: , , , , — pabloide86 @ 12:45 am

Holasss amigos! Hacia muchísimo que no escribía por acá! El motivo de este post es compartir mi experiencia con respecto al tunning de performance de una aplicación, mas específicamente de una aplicación web.  Mas que nada para compartir algunas herramientas y procedimientos que me fueron muy útiles a la hora de identificar cuellos de botella en el código.

Por desgracia, este trabajo siempre suele dejarse para el final, cuando todo el trabajo ya esta hecho y estamos al horno con la entrega por lo que cualquier cambio impacta mucho! Asique manos a la obra..

(more…)

Anuncios

agosto 1, 2008

Profiling: Analizando el rendimiento de nuestros programas

Filed under: .Net, Desarrollo, Herramientas, Software — Etiquetas: — Matías @ 8:32 pm

Buenas,

Hoy les voy a contar sobre un programa que encontré y me resultó muy útil a pesar de lo poco que lo usé, pero antes de describirlo voy a hacerles una pequeña introducción.

¿Alguna vez sintieron la necesidad de ver que parte de nuestro programa es la que más recursos consume? ¿de ver cuanto tarda en promedio en ejecutarse nuestro super método HacerTodo()?. Si se sintieron identificados con alguna de estas situaciones, entonces, esta nota posiblemente te resulte útil.

¿Qué es el profiling?. Recurramos a la Wikipedia. Cito:

En ingeniería de software, análisis de performance, comúnmente llamado profiling, es la investigación del comportamiento de un programa de computadora usando información reunida del análisis dinámico del programa (cuando este esta corriendo) en oposición al análisis estático (análisis de código). La meta del análisis de performance es determinar que partes del programa se pueden optimizar para ganar velocidad u optimizar el uso de memoria.

Usualmente el análisis de performance tiene una gran importancia aunque (como muchas otras practicas importantes) no se realiza con la seriedad necesaria. Se suele decir que el profilin tiene que ocupar un 90% del tiempo del desarrollo de una aplicación.

Suena interesante, ¿no?.

Uno de los programas que probé (de hecho, fue el único) y quedé encantado con él es dotTrace, en su versión 3.1. Lamentablemente este software no es ni OpenSource ni gratuito, aunque por suerte, provee una demo totalmente funcional por 10 días… lo cual me parece un punto para destacar.

Lo que hace este software es analizar nuestro programa en tiempo de ejecución (no es necesario tener el código fuente a mano, pasandole el ejecutable basta). Nos muestra método por método donde se demora más, ilustrando así los cuellos de botella o simplemente algún bucle mal armado que se nos pasó; cuantas llamadas recibió cada método; cuanta memoria utiliza cada proceso … entre otras cosas.

Seguramente a esta altura estarán deseando ver como se ve todo, bien … acá está:

Otra herramientas para realizar esto son:

Gratuita y con código fuente:

  • NPerf: http://www.codeproject.com/KB/architecture/nperf.aspx
  • Comerciales:

  • C# Profiler Tool: http://www.semanticdesigns.com/Products/Profilers/CSharpProfiler.html
  • .NET Memory Profiler: http://memprofiler.com/
  • ANTS Profiler: http://www.red-gate.com/products/ants_profiler/index.htm
  • Intel VTune Performance Analyzer: http://www.intel.com/cd/software/products/asmo-na/eng/239144.htm
  • Pueden encontrar más sobre éste tema en el artículo Find Application Bottlenecks with Visual Studio Profiler o sino realizando una búsqueda en google.

    Es todo, espero que les resulte tan útil como a mi y si encuentran algun otro software recomendable, no duden en comentarlo.

    ¡Hasta la próxima!

    Blog de WordPress.com.