null Le 23/09/2003 à 20:30 Je voulais savoir si optimiser des strucutres ou matrices assez lourdes du genre TEXT[nb_str].chaine[str_pos]; par un simple pointeur à l'intérieur d'une boucle est valable dans tout les cas ?
Parce-ce que j'ai effectué plusieurs tests qui me donnent des résultats assez bizarres :
Voici mon code non optimisé (enfin que je suppose non optimisé)
for(a=0;a<value;a++)
{
TEXT[nb_str].chaine[str_pos++]=Char;
}
Et voici maintenant l'optimisation que j'ai tenté :
char *temp_text = TEXT[nb_str].chaine;
for(a=0;a<value;a++)
{
temp_text[str_pos++] = Char;
}
Et la structure :
typedef struct
{
char chaine[50];
Str_Mode param;
}Text;
Le tableau TEXT est alloué dynamiquement.
Dans le premier cas l'exécution prend toujours le même temps et dans le deuxième cas (celui qui utilise le pointeur) autant l'éxécution peut-être bien plus rapide autant des fois ça ne change rien (c'est tout juste si c'est même pas pire).
Pour faire mes tests j'utilise les timers.
Donc je voulais savoir si l'optimisation, que j'ai réalisé est vraiment une optimisation ?
www.wikio.fr/user1921&info=comments
Regarde le code en ASM pour voir ce qui change.
Sinon, écris ton code en ASM. Si tu as beosin d'une telle précision d'optimisation, tu auras de bie meilleurs résultats en ASM.
Sinon, ton optimisation me paraissait inutile à première vue. Je pensais que si nb_str ne changeait pas pendant la boucle, TIGCC ne recalculerait pas à chaque fois quel TEXT on veut. Mais apparamment, tes mesures donnent des résultats différents pour les deux codes....

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
null Le 23/09/2003 à 20:59 Bah justement je ne savais pas si TIGCC l'optimisait ou pas... ce qui me surprend le plus c'est qu'en coup l'optimisation que j'ai tenté est efficace et tantôt d'autre fois elle paraît inutile.
Parce-qu'en fait kà je suis entrain de programmer un parser et ce code correspond à une toute petite partie du 'compilateur' mais je l'utilise aussi à d'autre endroit et ça constitue une part importante dans l'analyse du programme.
Avec un fichier de 14 ko ça met 27 s et je trouve que c'est un peu trop lent (enfin j'ai qd même une barre de loading pour regarder la progression qui prend pas mal de ressources et puis les timers).
Mais au moins sur 27 s je suis sûr de réaliser un test qui soit significatif mais en fait, non.
www.wikio.fr/user1921&info=comments
null Le 23/09/2003 à 21:19 Euh,non il fait 24 ko, le fichier. J'ai qd même refait moi même toutes les routines pour manipuler les chaînes donc ça pourrait être pire !
Mais sinon pour les petits fichiers, car 24 ko c'est qd même énorme, ça va très très vite.
Alors sinon mon programme parse des fichiers texte qui sont écrits dans un langage un peu particulier que je suis entrain de mettre au point.
Il permet de faire du texte en niveau de gris, du texte animés, d'inclure des lignes de texte d'autres fichiers textes sur la Ti, d'utiliser les 3 fonts et tout pleins de modes en mêmes temps du genre souligné, surligné, des chaînes avec des caractères qui se touches.
il permet aussi de centrer du texte, de faire des retrait et le tout soit avec des paramètres soit avec des "balises" toutes faites du genre <titre> ou <bannière>.
Mais mon programme formate le texte ligne par ligne.
www.wikio.fr/user1921&info=comments