Discussion:
optimización y eficiencia en C
(demasiado antiguo para responder)
RETECAL nos tima - MechaKaiser
2004-01-08 13:18:28 UTC
Permalink
Hola a todos...
Buenas
Veréis, estoy en esto de aprender C, y siempre oigo los terminos
eficiencia y optimización.
¿Estás aprendiendo c? Si estás apendiendo a programar, por ahora pasa
olímpicamente de la optimización. La optimización no es más que técnicas
avanzadas de programación dependientes del sistema y de difícil
explicación sin una base técnica. Hay dos tipos básicos de optimización,
hasta cierto punto incompatibles: la optimización de tiempo de proceso, y
la optimización de uso de memoria.

La optimización del tiempo de proceso trata de aprovechar al máximo el
trabajo ya hecho con el fin de hacer que el programa se ejecute lo más
rápido posible.

La optimización de uso de memoria trata de diseños poco eficientes en
velocidad, pero que consumen cantidades mínimas de memoria.
No me refiero con esto a usar uno u otro algoritmo... esto es aparte...
ni tampoco a usar ensamblador, para que pilléis la idea, algo parecido
a
http://www.ual.es/~jjfdez/IC/Practicas/optim.html
Precisamente la optimización trata de usar uno u otro algoritmo que
ahorra no se qué cálculos, o que necesita menor espacio de pila para su
ejecución.
¿Cuáles son esos fallos que cometemos todos los principiantes de la
programación en C?
Intentar construir la casa desde el tejado. Primero los cimientos, luego,
las paredes, y luego el tejado. Empieza aprendiendo a programar, y cuando
hayas hecho un programa útil lo suficientemente grande como para tardar
varios segundos en ejecutarse, entonces quizás tenga interés la
optimización.
Un saludo desde Tenerife y flz año.
Otro desde Pucela
RETECAL nos tima - MechaKaiser
2004-01-08 15:00:14 UTC
Permalink
Hola de nuevo...
Post by RETECAL nos tima - MechaKaiser
¿Estás aprendiendo c? Si estás apendiendo a programar, por ahora pasa
olímpicamente de la optimización. La optimización no es más que
técnicas avanzadas de programación dependientes del sistema y de
difícil explicación sin una base técnica. Hay dos tipos básicos de
optimización, hasta cierto punto incompatibles: la optimización de
tiempo de proceso, y la optimización de uso de memoria.
Hombre, independientemente de si estoy empezando a programar en C o no
en mi caso
particular, el debate sigue siendo interesantes para otros que sí que
tengan la base, o gente como yo que os leemos en la ocuridad. De todas
maneras tengo una base de programar en C, aunque no sólida,
pero creo más que nada es eso, el debate en sí, no en intentar
explicarme a mí
particularmente si hacer esto o no hacer esto...
Luego el debate siempre queda y se puede tener como referencia, ya
digo, no hay (o no encuentro) una buena documentación sobre el tema,
sino cosas sueltas, pero por ejemplo sí que hay varias guias sobre el
estilo, a algo de eso
me refiero.
Busca en google, o mejor en una buena biblioteca libros de algoritmia.
También puedes buscar algo de la asignatura "Estructuras de datos",
procedente de carreras universitarias. Ahí puedes encontrar algo de lo
que buscas.
Otro saludo más. :-)
Martin J. Sanchez
2004-01-09 13:05:25 UTC
Permalink
...
Veréis, estoy en esto de aprender C, y siempre oigo los terminos
eficiencia y optimización.
Buscando por la red encuentro siempre cosas sueltas, pero nunca ningún
documento extenso que abarque acerca de como escribir programas de C
eficientes.
No me refiero con esto a usar uno u otro algoritmo... esto es aparte...
ni tampoco a usar ensamblador, ...
No conozco demasiados links, aunque una rapida busqueda en internet te
proporcionara muchos enlaces. Por ejemplo:
http://www.cs.utk.edu/~london/MPPopt/HTML/ppframe.htm
donde se muestran varias tecnicas de optimizacion de codigo.
o:
http://citeseer.nj.nec.com/cs?q=%22code+optimization%22&cs=1
con articulos relacionados a la optimizacion

Existen tambien algunos libros que hablan con cierta profundidad del
tema, por ejemplo yo te aconsejo:
"Software Optimization for High Performance Computing: Creating Faster
Applications" de Kevin Wadleigh, Isom Crawford. Prentice Hall.

Con seguridad, la mejor optimizacion la encuentras en la utilizacion
de algoritmos optimos, y tecnicas de programcion dinamica o evaluacion
parcial.
¿Cuáles son esos fallos que cometemos todos los principiantes de la
programación en C?
Dado que estas aprendiendo C, yo no entraria en la optimizacion de la
codificacion. En general, debes comprender ciertos problemas y despues
las tecnicas para solventarlos:
- accesos espaciados (stread) a memoria
- optimizacion de bucles
- simplificacion de operaciones complejas a operaciones simples
- implicaciones de la promocion automatica de tipos
- y otras como indexacion contra acceso secuencial a traves de
punteros. etc.

Un saludo,
Martin.
Martin J. Sanchez
2004-01-09 13:22:49 UTC
Permalink
On Fri, 09 Jan 2004 14:05:25 +0100, Martin J. Sanchez
Post by Martin J. Sanchez
No conozco demasiados links, aunque una rapida busqueda en internet te
...
Se me habia olvidado nombrar un enlace que he encontrado. Aunque
basico, te dara alguna idea:
http://www.mhpcc.edu/training/workshop2/optimization/MAIN.html

Un saludo,
Martin.

Loading...