Datapayasadas

Agosto 26, 2008

Bug gráfico: TabControl dentro de un SplitContainer

Archivado en: .Net, C#, Desarrollo — Etiquetas:, , — Matías @ 1:54 pm

Hola,

Como recordarán, o no, en un artículo pasado nos ocupamos de solucionar el parpadeo molesto de los ListView, pero lo que nos convoca hoy, es la necesidad de solucionar otro pequeño, aunque también molesto, bug gráfico que incluye el TabControl … bug que se encuentra reportado desde la versión 2005 (al menos), pero que aún no se ha solucionado en la 2008.

(más…)

Agosto 21, 2008

Para Geeks: SQL Injection

Archivado en: Boludeces, Humor — Etiquetas:, — Matías @ 10:30 am
SQL Injection

SQL Injection

Agosto 1, 2008

Profiling: Analizando el rendimiento de nuestros programas

Archivado en: .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.