Styles

samedi 16 janvier 2010

Déplacement de code invariant de boucle

L’optimisation de code est un vaste sujet, car il s’agit plus d’un art que d’une théorie axiomisée. Elle n’est que la conséquence des limitations auxquelles sont confrontés les informaticiens.

Il est bien connu que l’optimisation prématurée est la source de tous les malheurs, mais il est quand même recommandé de connaître les limites des outils et langages que l’on utilise pour pouvoir coder juste au premier coup.

Avec les RIA, ils est maintenant nécessaire d’écrire des portions de code relativement importantes en Javascript alors que ce langage n’était prévu à l’origine que pour dynamiser un peu les pages Web statiques.

Javascript n’a pas été conçu pour réaliser des optimisations de code en amont de son exécution comme pourrait le faire un compilateur C ou Java. Une des optimisations à faire absolument est le déplacement du code invariant de boucleLoop-invariant code motion »).

Par exemple si vous avez du code comme ça :
for (i = 0; i < n; ++i) {
x = y + z;
a[i] = 6 * i + x * x;
}
Alors il vaut mieux le réécrire comme ci-dessous sous peine de laisser l’interpréteur Javascript recalculer à chaque itération des valeurs invariantes :
x = y + z;
t1 = x * x;
for (i = 0; i < n; ++i) {
a[i] = 6 * i + t1;
}
Ce genre d’optimisation est généralement bien réalisé par les compilateurs C ou Java mais Javascript n’a pas ce genre d’intelligence. Le déplacement de code invariant de boucle est une des optimisations préconisées par Jon Bentley dans Programming Pearls, livre O combien recommandé dans ce domaine.

lundi 11 janvier 2010

Répertoire de sons pour vos homebrew...

Je surfais par hasard sur la toile, à la recherche de sons gratuitement réutilisable pour une création multimedia sur Nintendo DS.

Je suis tombé sur ce répertoire de liens vers des sites collection de sons divers et variés.

C'est un bon point de départ pour ceux qui font du homebrew sur Nintendo DS ou autre, et qui cherche des sons réutilisable sans frais.