Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: x64core en 3 Enero 2012, 06:15 am



Título: Acerca de rendimiento de Aplicaciones
Publicado por: x64core en 3 Enero 2012, 06:15 am
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


Título: Re: Acerca de rendimiento de Aplicaciones
Publicado por: leogtz en 3 Enero 2012, 06:57 am
Mmmmm, quizás los algoritmos + estructuras de datos que usen, además de las librerias, el lenguaje y demás....


Título: Re: Acerca de rendimiento de Aplicaciones
Publicado por: tig0 en 3 Enero 2012, 20:29 pm
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.


Título: Re: Acerca de rendimiento de Aplicaciones
Publicado por: x64core en 4 Enero 2012, 08:07 am
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


Título: Re: Acerca de rendimiento de Aplicaciones
Publicado por: Arkangel_0x7C5 en 4 Enero 2012, 15:45 pm
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 (http://en.wikipedia.org/wiki/Simple_API_for_XML) usan muy poca memoria, pero no permiten el acceso aleatorio. Los DOM (http://en.wikipedia.org/wiki/Document_Object_Model) 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