Acerca de rendimiento de Aplicaciones

Iniciado por x64core, 3 Enero 2012, 06:15 AM

0 Miembros y 1 Visitante están viendo este tema.

x64core

Buenas :D
Quisiera saber si alguien tiene informacion sobre como programar o metodos sobre como saber que
metodos son mejores para que mejore el rendimiento...
me explico hace unos dias habia descargado dos aplicaciones convertidores de pdf , probé las dos aplicaciones
y me parecio curioso que una aplicacion en el proceso de convertir el archivo me usaba mucha cpu, llegaba hasta los 90% y de memoria me usaba bien poca y la otra aplicacion me usaba mas memoria quiza un 300%,400% mas y de CPU me llegaba a un 30%
me quede pensando y me imagine que era en la forma que habian sido programadas ( obvio) pero de que forman generalmente
son programadas este tipo de aplicaciones para que reaccionen asi?
gracias :D

leogtz

Mmmmm, quizás los algoritmos + estructuras de datos que usen, además de las librerias, el lenguaje y demás....
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

tig0

hay muchos factores que afectan al rendimiento siendo el algoritmo (en mi opinion) de los que mas influye directamente. una buena gestion de memoria y el uso de SIMD (cuando es necesario) en tareas criticas podria decirse que son, tambien, fundamentales.

si la memoria no esta alineada pues a la cpu le costara mas, si el algoritmo es una basura tendra que hacer un proceso 1000000 de veces cuando podrian usarse algoritmos de complejidad logaritmica. si usas vectores de la STL y no te preocupas por reservarle espacio suficiente va a estar liberando + reservando memoria constantemente a medidas que lo llenes y eso se come los tiempos de ejecucion.

en fin, son muchas cosas que al final pasan factura.

x64core

Bien gracias!, habia pensado tambien sobre los bucles :P
e visto que apps que tienen hasta bucles anidados y que se ejecutan cientos o miles de veces ocupan bastante cpu mas
si no hay un... nose como se llama a la accion que hace que en cada ciclo de los bucles haga una espera minima :P

Arkangel_0x7C5

Lo que ocurre es que tu al hacer un algoripmo puedes optar por crear grandes estructuras de datos para guardar lo procesado, o no guardarlo e ir analizando sobre la marcha.

Un ejemple de ello son los parser de xml. Los que usan el metodo SAX usan muy poca memoria, pero no permiten el acceso aleatorio. Los DOM crean un gran arbol que luego permite el acceso a cada uno de los nodos, ocupa mas memoria pero solo se analiza una vez

Saludos