Uno de los problemas que más se repite en los programas que manejan muchos datos o que tienen algoritmos complejos, es el tiempo que tarda el sistema en realizar los cálculos y los recursos que necesita. Por esta razón, hoy te enseñamos 3 maneras de optimizar tus programas en C#
Tabla de contenidos
Optimizar es un proceso clave en el mundo empresarial, el cual consiste en reducir los recursos necesarios para alcanzar un objetivo. En este caso queremos reducir el tiempo de computación y la cantidad de memoria, necesaria para ordenar un conjunto de datos grande. La optimización tiene los siguientes problemas:
Como sabrás, no todos los tipos de datos se manejan igual de rápido por un procesador. Por ello es imprescindible elegir tanto los tipos de datos simples, como los complejos, más óptimos para nuestro problema. En el caso de C#, nos encontramos con que podemos tener colecciones de documentos usando listas y usando arrays. Aunque para algunos ambos pueden ser usados indistintamente, si en tu problema el número de documentos no va a cambiar y necesitas optimizar, debes utilizar arrays. Esto es debido a que, al ser una colección más simple, realiza las operaciones a más bajo nivel, es decir, evita gran parte de la sobrecarga que tienen las listas.
Hoy en día, todos los dispositivos que solemos manejar son capaces de trabajar con varios hilos de ejecución. Sin embargo, hay pocos programas que saquen partido a este hecho, un ejemplo de ello son los juegos, ya que muchos de ellos solo son capaces de gestionar hasta 2 o 4 hilos. La programación paralela genera muchos problemas, pero si es bien utilizada, consigue mejoras de rendimiento muy elevadas.
En el caso que estaba trabajando, para ordenar una colección se puede utilizar tanto ordenación secuencial, como ordenación paralela. Por ejemplo el método Array.Sort(), nos ordena nuestro array de manera secuencial, mientras que si usamos PLINQ podemos conseguir un ordenamiento paralelo de la colección.
Programar a más bajo nivel, si eres capaz de trabajar en ese nivel, suele ayudar mucho a optimizar un problema. Pero hoy no os voy a hablar de implementar código en ensamblador para optimizar cálculos (cosa que se hace por ejemplo en OpenSSL). Sino de una serie de consejos que he encontrado útiles, para mejorar el rendimiento:
Una vez hemos realizado un conjunto de optimizaciones en nuestro código, debemos tener un conjunto de datos y un método para medir claramente la mejoría lograda. En algunos casos, el comportamiento de una optimización puede ser mejor en unas versiones que en otras, así que es muy util tener un programa encargado de hacer test de rendimientos automáticos.
En mi caso, para demostrar lo expuesto anteriormente, he desarrollado un programa capaz de realizar un pequeño benchmark:
Como podéis ver el mejor método para ordenar mi conjunto de datos, ha sido utilizar PLINQ junto a una colección de datos almacenada en un array.
Para realizar la captura de tiempos, he utiliza la clase Stopwatch, la cual permite medir el tiempo transcurrido con precisión.
¿Has tenido problemas de rendimiento en tus programas? o ¿sabes alguna otra técnica de optimización?, esperamos tu comentario.
Un saludo.
En los últimos tiempos no he podido escribir con toda la frecuencia que me gustaría,…
Uno de los problemas más comunes a los que se enfrentan los usuarios que empiezan…
Cuando empiezas un proyecto hay una serie de aspectos comunes que suelen ser resueltos mediante…
Si alguna vez has tenido que realizar un desarrollo de front-end seguramente te habrás dado…
Una vez que una persona ya ha aprendido lo básico sobre un lenguaje de programación,…
Hoy en día, un gran porcentaje de los proyectos que se desarrollan son páginas webs.…