Sisco, no eres pesado, creo que tu opinión y aporte ejemplificador vale y mucho, pero creo que hay ciertas cosas en que un compilador no puede 'adivinar' tanto, aunque también es cierto que deben hacerse mejoras. Con adivinar me refiero a que no siempre se puede saber si el código irá en un lado u otro.
Está más que claro tu ejemplo y no lo puedo refutar porque como dije antes no he usado el C30 pero lo que sí puedo decirte es que a veces, algunas operaciones se pueden hacer en una forma u otra. Tal vez si usaras punteros en tu código no tardaría tanto en ejecutarse, lo digo porque me ha pasado en C18,
Con decir que hay que saber cómo funciona el compilador, precisamente es para atacar este tipo de problemas. Por ej, solo algunas cositas: las variables si son declaradas como estáticas para que no ocupen lugar en el stack se acelera la ejecución, sobre todo cuando se las usa como parámetro por referencia. También se le puede indicar al compilador en qué banco están las variables y de esa forma el código generado también es menor. Usar punteros siempre que sea posible.
Yo debí cambiar mi forma de codificar para que el código se ejecute más rápido y para que no ocupe tanto espacio en memoria de programa. Donde antes ponía un arreglo, lo cambié por un puntero y cosas por el estilo.
En los IF, por ejemplo, pongo primero siempre la condición que creo que se dará primero como falsa con eso tengo más chances
de que mi código ejecute más rápido.
Y bueno, como ese hay cientos de truquitos.
Es cierto que cada vez hace falta un micro más potente pero también es cierto que de seguro también se hacen cosas más complejas!
Además un dspic, por 25 unidades está en unos 7 dólares, tampoco es la gran cosa
Bruno, te felicito! siempre es lindo dar esos primeros pasos. Ya te imagino, poniéndole un microforo
Yo ansío recibir mis dsPIC que parece los trae la abuela de la tortuga manuelita.